Spring中靜態變數的注入問題

2021-08-20 05:50:37 字數 1084 閱讀 8790

開發過程中需要將類注入到另乙個類的靜態變數中,一開始寫法如下所示:

@component

public

class

test

}

上面這種情況,在呼叫user物件時會報nullpointerexception,因為userlogin物件並沒有注入進來。為什麼呢?因為靜態變數並不屬於物件的屬性,而是屬於類的屬性,而spring則是基於物件的屬性進行依賴注入的,所以這樣做肯定不行。

為了能夠讓user物件不為空,最先想到的是在spring例項化test類時,對userlogin物件進行賦值,修改如下:

@component

public

class

test

public

static

boolean

login()

}

編寫乙個方法init(),並標註註解@postconstruct,意思就是在完成建構函式例項化後就呼叫該方法,該方法會對userlogin物件例項化。

但是執行login()方法後,會報userlogin物件裡的user物件為空,原來userlogin物件裡的user物件也是注入的:

public

class userlogin

但是在test類裡卻是用的new userlogin()來例項化的,導致脫離了spring的管理,怎麼解決該問題呢?想到既然可以在init方法裡例項化,那麼也可以引用注入的類了,因此修改如下:

@component

public

class

test

public

static

boolean

login()

}

至此,問題解決。

Spring依賴注入static靜態變數相關問題

問題 springmvc給靜態變數注入報 autowired annotation is not supported on static fields 原因 spring annotation不支援靜態變數注入 解決 方法一 把get,set方法的static修飾符去掉,然後在set方法上面加 au...

spring 如何給靜態變數注入值

有一次在專案中有乙個工具類的屬性是static,我造仿別人的注入方式也試著給我自己在工具類裡定義的變數進行注入,結果發現變數還是null,倒騰了半天都沒倒騰出來。正好在下班的時候靈光一閃,發現是不是因為變數是static的原因導致spring忽略掉次變數。因為靜態變數不屬於物件,只屬於類,也就是說在...

Spring 靜態變數 建構函式注入失敗的解決方案

目錄 案例 如下 component public class helloworld public static string hello world 解決方案一 value註解加在setter方法上面 component public class helloworld public void se...