解決SpringBoot使用@Value獲取不到y(tǒng)aml中配置值的問題
在最近的開發(fā)中遇到一個問題,使用@Value獲取yml文件中配置的屬性時(shí)始終獲取不到值,一開始我以為是沒有注入的問題,或者沒有寫setter方法的問題,后來我發(fā)現(xiàn)這些都都寫了然后開始百度發(fā)現(xiàn)獲取不到屬性值有這么幾個原因
獲取不到值的原因
1.沒有使用Component注解,也就是沒有注入到容器內(nèi)
2.變量被static修飾
3.在構(gòu)造器中使用了屬性值
問題分析
前兩點(diǎn)原因可以否定掉了,我在構(gòu)造器中使用了這個變量導(dǎo)致的
原因:在這個問題中我忽略了spring Bean的生命周期
實(shí)例化Bean:在這個階段,Spring容器創(chuàng)建Bean的實(shí)例,調(diào)用Bean的構(gòu)造方法。
注入屬性:Spring容器會盡力注入配置的屬性值,包括使用
@Value
注解注入的值。初始化Bean:在這個階段,Spring容器執(zhí)行一些初始化方法。通常,這包括調(diào)用
InitializingBean
接口的afterPropertiesSet
方法、執(zhí)行在Bean上使用@PostConstruct
注解的方法或自定義的初始化方法。
解決問題
知道了問題所在,但是還需要在bean加載的時(shí)候獲取到屬性值怎么辦,可以使用InitializingBean來解決,InitializingBean
接口是Spring Framework提供的一個用于初始化Bean的方式之一。它是org.springframework.beans.factory.InitializingBean
接口的一部分。當(dāng)一個Bean實(shí)現(xiàn)InitializingBean
接口時(shí),它必須提供一個afterPropertiesSet
方法,該方法將在Bean的屬性設(shè)置之后被自動調(diào)用。通常,你可以在這個方法中執(zhí)行一些初始化邏輯,以確保Bean在被容器實(shí)例化后處于可用狀態(tài)。
以上就是SpringBoot使用@Value獲取不到y(tǒng)aml中值的問題解決的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot @Value獲取不到y(tǒng)aml的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaWeb如何實(shí)現(xiàn)統(tǒng)一查詢接口(jfinal)
這篇文章主要介紹了JavaWeb如何實(shí)現(xiàn)統(tǒng)一查詢接口(jfinal),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06springboot-mongodb的多數(shù)據(jù)源配置的方法步驟
這篇文章主要介紹了springboot-mongodb的多數(shù)據(jù)源配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Java編程實(shí)現(xiàn)比對兩個文本文件并標(biāo)記相同與不同之處的方法
這篇文章主要介紹了Java編程實(shí)現(xiàn)比對兩個文本文件并標(biāo)記相同與不同之處的方法,涉及java針對文本文件的讀取、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10Java通過cellstyle屬性設(shè)置Excel單元格常用樣式的全面總結(jié)講解
在處理Excel文件時(shí),經(jīng)常需要對單元格進(jìn)行樣式設(shè)置,以滿足特定的需求和美化要求,這篇文章主要給大家介紹了關(guān)于Java通過cellstyle屬性設(shè)置Excel單元格常用樣式的相關(guān)資料,需要的朋友可以參考下2024-01-01Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法,結(jié)合實(shí)例形式分析了Spring抽象Bean和子Bean相關(guān)配置、定義與使用操作技巧,需要的朋友可以參考下2019-11-11