Spring 注入static變數

qingyezhu發表於2015-07-17

一般我們我想注入一個static的變數,如下:

    @Autowired
    private static String str;

不過,這樣最終結果為null

 

1、使用配置檔案的方式注入

  

 private static String from;

    public static String getFrom() {
        return from;
    }

    public static void setFrom(String from) {
        TestStatic.from = from;
    }


    <bean class="TestStatic">
        <property name="from" value="abc"/>
    </bean>

 

2、使用註解的方式,不過註解寫在非static的方法上

    private static String to;
    
    public static String getTo() {
        return to;
    }
    
    @Value("${mail.to}")
    public void setTo(String to) {
        TestStatic.to = to;
    }

 

 

備註:目前Spring的註解不支援靜態的變數和方法,至於原因:有人說是因為Spring是基於物件層面的依賴注入的,而且使用靜態的變數或類什麼的話,擴大了其生命週期,給Testing帶來困難,故Spring不推薦這樣做。至於還有沒有其他的什麼原因,抱歉,沒有搜到,咯咯,若你有什麼好的理由,可以私聊哦,謝謝!

 

相關文章