Spring不能注入Static變量的原因及Spring注入靜態(tài)變量
下面給大家介紹spring不能注入static變量的原因,具體詳情如下所示:
Spring 依賴注入 是依賴 set方法
set方法是 是普通的對象方法
static變量是類的屬性
@Autowired private static JdbcTemplate jdbcTemplate;
單純看這個注入過程是沒有報(bào)錯的,但是在接下來的jdbcTemplate.query()會報(bào)空指針錯誤.
ps:Spring注入靜態(tài)變量
今天碰到一個問題,我的一個工具類提供了幾種靜態(tài)方法,靜態(tài)方法需要另外一個類的實(shí)例提供處理,因此就寫出了這樣的代碼:
Class Util{
private static XXX xxx;
xxx = BeanUtil.getBean("xxx");
public static void method(){
xxx.func();
}
public static void method(){
xxx.func();
}
}
這里是使用的getBean的方式,獲得XXX的實(shí)例,但是別人說這個方法不好,想要注入的方式。
但是靜態(tài)的XXX如何注入呢?
上網(wǎng)查了很多的說法,其實(shí)很簡單:
Class Util{
private static XXX xxx;
public void setXxx(XXX xxx){
this.xxx = xxx;
}
public void getXxx(){
return xxx;
}
public static void method1(){
xxx.func1();
}
public static void method2(){
xxx.func2();
}
}
在xml中正常配置注入就可以了。
<bean value="test" class="x.x.x.Util"> <property value="xxx" ref="xxx"/> </bean>
這里要注意,自動生成的getter和setter方法,會帶有static的限定符,需要去掉,才可以。
相關(guān)文章
如何解決maven報(bào)錯:不知道這樣的主機(jī)問題
這篇文章主要介紹了如何解決maven報(bào)錯:不知道這樣的主機(jī)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
Windows下gradle的安裝與配置的超詳細(xì)教程
這篇文章主要介紹了Windows下gradle的安裝與配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Springboot2.x+Quartz分布式集群的實(shí)現(xiàn)
這篇文章主要介紹了Springboot2.x+Quartz分布式集群的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
spring啟動后保證創(chuàng)建的對象不被垃圾回收器回收
最近看到一個問題是,spring在啟動后如何保證創(chuàng)建的對象不被垃圾回收器回收?。所以本文結(jié)合jvm的垃圾回收機(jī)制和spring中的源代碼做出自己的一點(diǎn)猜測。有需要的朋友們可以參考借鑒。2016-09-09
Netty分布式Server啟動流程服務(wù)端初始化源碼分析
本章主要講解server啟動的關(guān)鍵步驟,?讀者只需要了解server啟動的大概邏輯,?知道關(guān)鍵的步驟在哪個類執(zhí)行即可,?并不需要了解每一步的運(yùn)作機(jī)制,?之后會對每個模塊進(jìn)行深度分析2022-03-03

