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

