spring中Constructor、@Autowired、@PostConstruct的順序


其實從依賴注入的字面意思就可以知道,要將對象p注入到對象a,那么首先就必須得生成對象p與對象a,才能執行注入。所以,如果一個類A中有個成員變量p被@Autowired注解,那么@Autowired注入是發生在A的構造方法執行完之后的。

如果想在生成對象時候完成某些初始化操作,而偏偏這些初始化操作又依賴於依賴注入,那么就無法在構造函數中實現。為此,可以使用@PostConstruct注解一個方法來完成初始化,@PostConstruct注解的方法將會在依賴注入完成后被自動調用。

Constructor >> @Autowired >> @PostConstruct

舉個例子:

public Class AAA {
    @Autowired
    private BBB b;
    
    public AAA() {
        System.out.println("此時b還未被注入: b = " + b);
    }
 
    @PostConstruct
    private void init() {
        System.out.println("@PostConstruct將在依賴注入完成后被自動調用: b = " + b);
    }
}

  轉載:https://blog.csdn.net/u014515854/article/details/78832790

 


免責聲明!

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



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