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

03-29 1394阅读 0评论

在最近的开发中遇到一个问题,使用@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注解的方法或自定义的初始化方法。

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

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

 解决问题

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

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

 


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1394人围观)

还没有评论,来说两句吧...

目录[+]