解決SpringBoot使用@Value獲取不到y(tǒng)aml中配置值的問題
在最近的開發(fā)中遇到一個(gè)問題,使用@Value獲取yml文件中配置的屬性時(shí)始終獲取不到值,一開始我以為是沒有注入的問題,或者沒有寫setter方法的問題,后來我發(fā)現(xiàn)這些都都寫了然后開始百度發(fā)現(xiàn)獲取不到屬性值有這么幾個(gè)原因
獲取不到值的原因
1.沒有使用Component注解,也就是沒有注入到容器內(nèi)
2.變量被static修飾
3.在構(gòu)造器中使用了屬性值
問題分析
前兩點(diǎn)原因可以否定掉了,我在構(gòu)造器中使用了這個(gè)變量導(dǎo)致的
原因:在這個(gè)問題中我忽略了spring Bean的生命周期
實(shí)例化Bean:在這個(gè)階段,Spring容器創(chuàng)建Bean的實(shí)例,調(diào)用Bean的構(gòu)造方法。
注入屬性:Spring容器會(huì)盡力注入配置的屬性值,包括使用
@Value注解注入的值。初始化Bean:在這個(gè)階段,Spring容器執(zhí)行一些初始化方法。通常,這包括調(diào)用
InitializingBean接口的afterPropertiesSet方法、執(zhí)行在Bean上使用@PostConstruct注解的方法或自定義的初始化方法。


解決問題
知道了問題所在,但是還需要在bean加載的時(shí)候獲取到屬性值怎么辦,可以使用InitializingBean來解決,InitializingBean接口是Spring Framework提供的一個(gè)用于初始化Bean的方式之一。它是org.springframework.beans.factory.InitializingBean接口的一部分。當(dāng)一個(gè)Bean實(shí)現(xiàn)InitializingBean接口時(shí),它必須提供一個(gè)afterPropertiesSet方法,該方法將在Bean的屬性設(shè)置之后被自動(dòng)調(diào)用。通常,你可以在這個(gè)方法中執(zhí)行一些初始化邏輯,以確保Bean在被容器實(shí)例化后處于可用狀態(tài)。

以上就是SpringBoot使用@Value獲取不到y(tǒng)aml中值的問題解決的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot @Value獲取不到y(tǒng)aml的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVA中Context的詳細(xì)介紹和實(shí)例分析
這篇文章主要介紹了JAVA中Context的詳細(xì)介紹和實(shí)例分析,Context是維持android各組件能夠正常工作的一個(gè)核心功能類。如果感興趣來學(xué)習(xí)一下2020-07-07
Spring事務(wù)事件監(jiān)控的實(shí)現(xiàn)
這篇文章主要介紹了Spring事務(wù)事件監(jiān)控的實(shí)現(xiàn)。本文首先會(huì)使用實(shí)例進(jìn)行講解Spring事務(wù)事件是如何使用的,然后會(huì)講解這種使用方式的實(shí)現(xiàn)原理。感興趣的小伙伴們可以參考一下2018-10-10
Java實(shí)現(xiàn)將Markdown格式內(nèi)容轉(zhuǎn)換為Word文檔
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)將Markdown格式內(nèi)容轉(zhuǎn)換為Word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-06-06
你所不知道的Spring的@Autowired實(shí)現(xiàn)細(xì)節(jié)分析
這篇文章主要介紹了你所不知道的Spring的@Autowired實(shí)現(xiàn)細(xì)節(jié)分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
MyBatis動(dòng)態(tài)SQL與MyBatis Generator插件使用教程
動(dòng)態(tài)SQL是Mybatis的強(qiáng)大特性之?,能夠完成不同條件下不同的sql拼接,本文給大家介紹MyBatis動(dòng)態(tài)SQL與MyBatis Generator插件使用,感興趣的朋友跟隨小編一起看看吧2026-03-03

