@PostConstruct 有什麼用?

最近看到這個註解,感覺網上很多隻是簡單的說了下執行順序,但其實還是有很多關注的點。爲了方便學習,做如下總結。

重點關注

根據jdk源碼註釋解讀,本註解的主要作用是

  • 用來執行依賴注入之後的初始化操作
  • 註解用來作用於方法
  • 每個類最多隻有一個只有的註解方法 只會執行一次
  • 本註解必須被所有能依賴注入的類所支持
  • 方法必須是無參方法 (除非聲明爲攔截器方法)
  • 方法最好不是靜態方法
  • 方法可以是final修飾

本方法的執行順序

在這裏插入圖片描述
根據執行順序可以知道,被本註解修飾的方法可以在依賴注入後聲明一些初始化的參數,並且只會被執行一次。

簡單示例

// 首先聲明一個雞類
@Data 
public class Chicken {

    private String name ;

}
// 將他注入容器
@Configuration
public class UserConfig {
    @Bean
    public Chicken putUser(){
        Chicken chinken = new Chicken();
        chinken.setName("吮指雞塊");
        return chinken;
    }
}
// 在family 類中調用 注入chinken
@Component
public class Family {
    @Resource
    Chicken chicken;

    public static List<String> names;

    @PostConstruct
    public void init(){
        names.add(chicken.getName());
        System.out.println("已添加肯德基全家桶豪華套餐");
    }
    public Family() {
        names = new LinkedList<>();
    }
}


在上面的示例中,我們需要在初始化時將chiken的name放入names中,但是在構造方法中是無法實現的,因爲構造方法執行時,chiken = null 因此@PostConstruct就派上了用場

測試結果

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章