Springboot中@Value失效問(wèn)題
Springboot中@Value失效
在寫(xiě)項(xiàng)目過(guò)程中,由于快速開(kāi)發(fā)項(xiàng)目,使用new的方式調(diào)用組件或服務(wù),這樣可麻煩了,導(dǎo)致組件里由@Value屬性無(wú)效。
有趣的是,在排查問(wèn)題過(guò)程中,我在其他服務(wù)使用@Value又有效果,這看來(lái)看去。
最終真相只有一個(gè),這。
分析原因
new 的方法出來(lái)的實(shí)例不會(huì)交給spring管理,所以不會(huì)代理。
在Spring框架中,通過(guò)使用@Autowired或@Resource等注解,可以將對(duì)象注入到其他組件或服務(wù)中。
這樣,Spring會(huì)負(fù)責(zé)管理該對(duì)象的生命周期,并在需要的時(shí)候自動(dòng)注入相關(guān)的屬性。
如果您想讓@Value注解生效,可以考慮將對(duì)象的創(chuàng)建交由Spring來(lái)管理。
1.使用@Component注解
將對(duì)象標(biāo)記為一個(gè)Spring管理的組件:
@Component
public class MyObject {
@Value("${my.property}")
private String myProperty;
// getters and setters
}然后在需要使用MyObject的地方,通過(guò)@Autowired注解將其注入:
@Autowired private MyObject myObject;
這樣Spring會(huì)自動(dòng)將屬性值注入到MyObject對(duì)象中。
2.如果不想將對(duì)象標(biāo)記為一個(gè)組件
可以使用@Configuration和@Bean注解來(lái)創(chuàng)建對(duì)象:
@Configuration
public class MyConfig {
@Value("${my.property}")
private String myProperty;
@Bean
public MyObject myObject() {
MyObject myObject = new MyObject();
myObject.setMyProperty(myProperty);
return myObject;
}
}然后在需要使用MyObject的地方,通過(guò)@Autowired注解將配置類注入,并調(diào)用其myObject()方法獲取對(duì)象:
@Autowired private MyConfig myConfig; ... MyObject myObject = myConfig.myObject();
這樣也可以讓@Value注解生效,并將屬性值注入到MyObject對(duì)象中。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java開(kāi)發(fā)神器Lombok安裝與使用詳解
Lombok的安裝分兩部分:Idea插件的安裝和maven中pom文件的導(dǎo)入,本文重點(diǎn)給大家介紹Java開(kāi)發(fā)神器Lombok安裝與使用詳解,感興趣的朋友跟隨小編一起看看吧2022-02-02
Java8 Zip 壓縮與解壓縮的實(shí)現(xiàn)
這篇文章主要介紹了Java8 Zip 壓縮與解壓縮的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Java中extends與implements解析:繼承與接口實(shí)現(xiàn)的本質(zhì)區(qū)別
在Java面向?qū)ο缶幊讨?extends和implements是兩個(gè)核心關(guān)鍵字,它們分別用于實(shí)現(xiàn)類繼承和接口實(shí)現(xiàn),本文將深入剖析這兩個(gè)關(guān)鍵字的異同點(diǎn),并通過(guò)典型應(yīng)用場(chǎng)景和代碼示例幫助開(kāi)發(fā)者掌握它們的正確使用方式,感興趣的朋友一起看看吧2025-09-09
Java 刪除與重置 Excel 文件密碼的完整示例(文件級(jí)與工作表級(jí)示例)
本文詳細(xì)介紹了如何使用Java實(shí)現(xiàn)Excel文件密碼的刪除與重置,涵蓋了文件和工作表級(jí)別的保護(hù)機(jī)制,通過(guò)使用Spire.XLSforJava組件,可以高效地完成這些操作,確保數(shù)據(jù)的安全性和系統(tǒng)的穩(wěn)定性,感興趣的朋友跟隨小編一起看看吧2026-02-02
Java實(shí)現(xiàn)漢字轉(zhuǎn)拼音的四種方案
在Java開(kāi)發(fā)中,處理中文拼音轉(zhuǎn)換是常見(jiàn)卻棘手的需求,無(wú)論是智能搜索、數(shù)據(jù)排序,還是拼音首字母檢索,面對(duì)多音字、性能瓶頸、內(nèi)存占用等問(wèn)題,開(kāi)發(fā)者該如何選擇,今天分享四種工具應(yīng)對(duì)不同場(chǎng)景,需要的朋友可以參考下2025-12-12
淺析SpringBoot中如何啟用MongoDB事務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot中如何啟用MongoDB事務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-05-05

