Spring不支援靜態變數注入原因及其解法

2021-09-27 12:01:28 字數 608 閱讀 9934

以下變數在使用時會報空指標

@autowired

private

static readservice readservice;

靜態變數/類變數不是物件的屬性,而是乙個類的屬性,spring則是基於物件層面上的依賴注入。靜態變數不屬於物件,只屬於類,也就是說在類被載入位元組碼的時候變數已經初始化了,也就是給該變數分配記憶體了,導致spring忽略靜態變數。

還記得spring注入的時候要求物件實現對應屬性的set()方法麼?我們可以重寫靜態變數的set方法:

private

static readservice readservice;

@autowired

public

void

setreadservice

(readservice readservice)

遇到這個問題主要是我想做乙個工具類,而這個工具類需要呼叫service服務。除了解決靜態service服務無法注入,實現工具類,還有另外一種解決方案————》把靜態工具類寫成乙個抽象類(不使用static方法),在需要用到的時候繼承這個抽象類。

VBA類不支援靜態成員變數

technorati 標籤 vba,靜態成員變數,static 首先宣告,以下所有的討論都針對vba。類的靜態成員變數是指這樣的成員變數 任何類的例項對這個成員變數的改動都會被該類的其他例項訪問到,或者說,所有類的例項共享這個變數。在vba中不支援靜態成員變數,如果你在vbe環境的類模組中在成員變數...

rsyslog input 不支援變數

input type imfile file usr local apache tomcat 7.0.55 8082 logs localhost access log.txt tag zjzc api access01 severity info facility local5 不支援這種寫法 i...

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

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