Spring如何給靜態變量注入值


Common.java是一個工具類。

Spring無法直接給靜態變量注入值,因為靜態變量不屬於對象,只屬於類,也就是說在類被加載字節碼的時候變量已經初始化了,也就是給該變量分配內存了,導致spring忽略靜態變量。所以如下這種寫法就是錯誤的,這樣是無法注入的,在使用該變量的時候會導致空指針錯誤:

@Autowired
private static IOptionService optionService;

Spring 依賴注入是依賴set方法,靜態變量不屬於對象,只屬於類。解決方法就是加上非靜態的set方法,如下:

    private static IOptionService optionService;

    @Autowired
    public void setOptionService(IOptionService optionService) {
        Commons.optionService = optionService;
    }

這樣就能在工具類中使用optionService了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM