SpringBoot使用@Value获取不到yaml中配置的值

在最近的开发中遇到一个问题,使用@Value获取yml文件中配置的属性时始终获取不到值,一开始我以为是没有注入的问题,或者没有写setter方法的问题,后来我发现这些都都写了然后开始百度发现获取不到属性值有这么几个原因

获取不到值的原因

1.没有使用Component注解,也就是没有注入到容器内

2.变量被static修饰

3.在构造器中使用了属性值

问题分析

前两点原因可以否定掉了,我在构造器中使用了这个变量导致的

原因:在这个问题中我忽略了spring Bean的生命周期

  1. 实例化Bean:在这个阶段,Spring容器创建Bean的实例,调用Bean的构造方法。

  2. 注入属性:Spring容器会尽力注入配置的属性值,包括使用@Value注解注入的值。

  3. 初始化Bean:在这个阶段,Spring容器执行一些初始化方法。通常,这包括调用InitializingBean接口的afterPropertiesSet方法、执行在Bean上使用@PostConstruct注解的方法或自定义的初始化方法。

 解决问题

知道了问题所在,但是还需要在bean加载的时候获取到属性值怎么办,可以使用InitializingBean来解决,InitializingBean接口是Spring Framework提供的一个用于初始化Bean的方式之一。它是org.springframework.beans.factory.InitializingBean接口的一部分。当一个Bean实现InitializingBean接口时,它必须提供一个afterPropertiesSet方法,该方法将在Bean的属性设置之后被自动调用。通常,你可以在这个方法中执行一些初始化逻辑,以确保Bean在被容器实例化后处于可用状态。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值