@PostConstruct

韓師學子--胖佳發表於2019-03-10

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

 

轉載:https://blog.csdn.net/zhaoyue007101/article/details/82468281

其實從依賴注入的字面意思就可以知道,要將物件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);
    }
}