解决SpringBoot使用@Value获取不到yaml中配置值的问题
在最近的开发中遇到一个问题,使用@Value获取yml文件中配置的属性时始终获取不到值,一开始我以为是没有注入的问题,或者没有写setter方法的问题,后来我发现这些都都写了然后开始百度发现获取不到属性值有这么几个原因
获取不到值的原因
1.没有使用Component注解,也就是没有注入到容器内
2.变量被static修饰
3.在构造器中使用了属性值
问题分析
前两点原因可以否定掉了,我在构造器中使用了这个变量导致的
原因:在这个问题中我忽略了spring Bean的生命周期
实例化Bean:在这个阶段,Spring容器创建Bean的实例,调用Bean的构造方法。
注入属性:Spring容器会尽力注入配置的属性值,包括使用
@Value
注解注入的值。初始化Bean:在这个阶段,Spring容器执行一些初始化方法。通常,这包括调用
InitializingBean
接口的afterPropertiesSet
方法、执行在Bean上使用@PostConstruct
注解的方法或自定义的初始化方法。
解决问题
知道了问题所在,但是还需要在bean加载的时候获取到属性值怎么办,可以使用InitializingBean来解决,InitializingBean
接口是Spring Framework提供的一个用于初始化Bean的方式之一。它是org.springframework.beans.factory.InitializingBean
接口的一部分。当一个Bean实现InitializingBean
接口时,它必须提供一个afterPropertiesSet
方法,该方法将在Bean的属性设置之后被自动调用。通常,你可以在这个方法中执行一些初始化逻辑,以确保Bean在被容器实例化后处于可用状态。
以上就是SpringBoot使用@Value获取不到yaml中值的问题解决的详细内容,更多关于SpringBoot @Value获取不到yaml的资料请关注脚本之家其它相关文章!
相关文章
mybatis-plus之自动映射字段(typeHandler)的注意点及说明
这篇文章主要介绍了mybatis-plus之自动映射字段(typeHandler)的注意点及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-04-04JDK1.8中的ConcurrentHashMap使用及场景分析
这篇文章主要介绍了JDK1.8中的ConcurrentHashMap使用及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-01-01SpringBoot3使用自定义注解+Jackson实现接口数据脱敏的步骤
本文介绍了一种以优雅的方式实现对接口返回的敏感数据,如手机号、邮箱、身份证等信息的脱敏处理,这种方法也是企业常用方法,话不多说我们一起来看一下吧2024-03-03
最新评论