SpringBoot中使用@Value取不到值

这篇具有很好参考价值的文章主要介绍了SpringBoot中使用@Value取不到值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot中使用@Value取不到值

一.场景

PoolSchedulerConfig类的taskPackage字段通过Value注解读取配置文件application.properties中的值,并将taskPackage字段得到的值在构造器中通过某种方法处理后再将其赋给另一个数值taskNum,但是失败了,如下图所示。

universe.thread.pool.scheduler.taskPackage=com.temperature.humidity.system.schedule.task

value注解读取不到配置,生活中遇到的问题,spring boot,java,spring,后端

二.排查问题

从网上查找资料可知有三种情况导致@Value获取不到配置值

  • 类没有使用@Component及其衍生标签修饰
  • 变量被关键字static修饰
  • 在Bean初始化时构造方法中引用被@Value修饰的变量

三.解决问题

很显然我们这种情况是第三种,这是因为使用@Value进行注入值的时候,只有在使用实例的时候才会注入。
那既然只有在使用实例的时候才会注入,这样我们就想起了可以实现InitializingBean接口并重写其afterPropertiesSet方法来达到此目的,因为在spring的bean的生命周期中,实例化->生成对象->属性填充后会进行afterPropertiesSet方法。

package com.temperature.humidity.system.config.thread;

import cn.hutool.core.util.ClassUtil;
import lombok.Data;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@Data
public class PoolSchedulerConfig implements InitializingBean {

    /**
     * 含有定时任务的包
     * 使用@Value进行注入值的时候,只有在使用实例的时候才会注入。
     */
    @Value("${universe.thread.pool.scheduler.taskPackage}")
    private String taskPackage;

    /**
     * 任务数
     */
    private Integer taskNum;

    /**
     * 在spring的bean的生命周期中,实例化->生成对象->属性填充后会进行afterPropertiesSet方法,
     */
    @Override
    public void afterPropertiesSet() {
        //通过扫描定时任务包下的类数量=定时任务的数量=线程的数量
        this.taskNum = ClassUtil.scanPackage(this.taskPackage).size();
    }

}

四.测试

接着我们开始测试如下图所示taskPackage和taskNum的数值都有了,则证明已测试成功,如下图所示。

value注解读取不到配置,生活中遇到的问题,spring boot,java,spring,后端文章来源地址https://www.toymoban.com/news/detail-704482.html

到了这里,关于SpringBoot中使用@Value取不到值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot @Value读不到Nacos配置中心的值。(properties配置文件)

    读不到配置中心的值, 配置中心的配置文件名字(Data ID的值)要以.properties结尾。 如果是yaml,就以yaml命名。

    2024年02月07日
    浏览(59)
  • 进阶项目 01 使用@value注解,@ConfigurationProperties ,@PropertySource和properties文件

    这可能是分布式开发的前奏,什么是分布式开发,一般在学校里面写的springboot项目,只有application.properties或者是application.yml文件中的一个配置信息,例如: application.yml文件中: 这种一般是单体开发(一个服务器) 而分布式开发,是多个服务器在同一个项目中去使用,可能

    2023年04月25日
    浏览(35)
  • SpringBoot获取配置:@Value、@ConfigurationProperties方式

    配置文件yml 注入(需要把类交给spring) 使用(可以直接在注入的类中使用) 测试 解释 不能这样直接注入到静态属性上 这样是获取不到值的 注入(需要注入到非静态set方法上,再复制给静态属性) 使用(有两种方式:静态属性方式、get方式) 测试 注入 使用、测试 注入 使用、

    2024年02月05日
    浏览(38)
  • SpringCloud读取Nacos配置中心报错:Could not resolve placeholder ‘xxx’ in value ‘${xxx}

    hello,我是灰小猿,一个超会写bug的程序员! 近期在写一个spring cloud Alibaba读取Nacos配置中心远程配置文件的内容时,出现了几个比较坑的bug,在此记录一下,帮大家避避坑。 我的使用场景: SpringBoot版本为2.6.0 Spring Cloud版本为2021.0.1 Spring Cloud Alibaba版本为2021.0.1.0 如果你的C

    2024年02月05日
    浏览(66)
  • Spring中的@Value注解详解

    概述 本文配置文件为yml文件 在使用spring框架的项目中,@Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解@Value的用法。 @Value 注解可以用来将外部的值动态注入到 Bean

    2024年02月06日
    浏览(51)
  • Spring中@Value注解取值为null问题排查

    一、背景 近期应用中因业务迭代需要接入 user 客户端,接入后总是启动失败,报注册 user bean 依赖的配置属性为 null(如 appName,group 等都为空),示例代码如下: 二、@Value 取值为 null 原因分析 2.1. @Value 取值为 null 常见原因分析 常见现象一:类没有交给 Spring 管理,比如类没

    2024年02月10日
    浏览(38)
  • 记--springboot-工具类中使用@Component、@Resource与@Value失效

    写一个工具类 需要使用@Resource注入RedisTemplate 使用@Value获取application.properties配置文件中配置 并使用@Component将该工具类交个spring管理 调试的时候RedisTemplate以及所有的变量全是是null 看了网上的各种解决方式五花八门 有的说出现问题的原因:@Component这个注解把该类注入到spr

    2024年02月02日
    浏览(36)
  • springboot在自定义拦截器中使用@Value获取值失败及@RefreshScope 不生效问题

    @RefreshScope注解用于标识在服务配置中心配置更新时,当前 Bean 需要重新注入以获取最新的配置值。但是在这段代码中,@RefreshScope注解标注在拦截器类上,并不会使拦截器实例重新注入。 通常情况下,拦截器是在应用程序启动时由 Spring Framework 实例化和初始化的,而不是在请

    2024年02月04日
    浏览(48)
  • Springboot读取外部配置文件,项目部署时配置读取不到问题

    需求: 最近项目部署,但是每个地方都有个别地方配置的差异,我们每次打包后再进行修改极度不方便,这里将有关的配置都抽取出来,放在jar包外进行配置,这样以后更新时只需要将jar包更换然后重启即可,配置读取外部的固定配置文件。 SpringBoot 配置 springboot默认配置的

    2024年02月07日
    浏览(50)
  • spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)

    目录 一、@RequestMapping注解的功能 二、@RequestMapping注解的位置 三、@RequestMapping注解的value属性 四、@RequestMapping注解的method属性 五、@RequestMapping注解的params属性 六、@RequestMapping注解的header属性 七、SpringMVC支持ant分格的路径 八、SpringMVC支持路径中的占位符 从注解名称上我们可

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包