1. 程式人生 > >Spring中 靜態成員變數的注入,以及其他靜態成員變數的單例延遲載入--查漏補缺

Spring中 靜態成員變數的注入,以及其他靜態成員變數的單例延遲載入--查漏補缺

Spring對於一個需要自動注入的類,首先應該在類上加入註解:@compone   或者@seveice等等。

由於對於靜態成員變數,直接加@Value("xxxxx")是無法獲取值的,執行時是在其他方法中呼叫為null,我們知道spring自動注入是通過呼叫該類的setter方法注入,因此可以通過新增該成員變數的setter方法,(注意:若用eclipse自動匯入setter功能,出現的setter方法是靜態static的,你需要去除static關鍵字),然後在出現的setter方法上加入@Value("xxxxx"),此時就能獲得自動注入資原始檔設定的值了。

對於單例模式,我們通常定義單例為private static Singlon instance;

通常可以採用以下的雙重檢查的方式:

private static   Singlon getInstace() {  
        if(instance== null){  
            synchronized (
 Singlon.class) {  
                if(instance == null){  
               
                 instance= new  Singlon();  
                }  
            }  
        }  
        return instance

;  
    }  

通過這種延遲載入的方式,我們可以在單例中引入注入的靜態成員變數的值。

若通過"餓漢模式",則無法引用我們自動注入的靜態變數,原因我們也知道,JAVA 類載入機制,載入循序的問題。

專案中遇到的問題,我剛好採用這種方式實現,所以在此處寫一篇博文。一點淺見。