使用場景:
如果想在生成對象時候完成某些初始化數據的操作,而偏偏這些初始化操作又依賴於依賴業務類的注入,那麼就無法在構造函數中實現。而這時,使用@PostConstruct註解一個方法即可實現初始化操作。
@PostConstruct註解是Java自身的註解,Java中該註解的說明:
@PostConstruct該註解被用來修飾一個非靜態的void() 方法。被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,並且只會被服務器執行一次。PostConstruct在構造函數之後執行,init() 方法之前執行。
通常我們會是在Spring框架中使用到@PostConstruct註解,該註解的方法在整個Bean初始化中的執行順序:
Constructor(構造方法) -> @Autowired(依賴注入) -> @PostConstruct(註釋的方法)
即:@PostConstruct註解的方法將會在依賴注入完成後被自動調用,可以調用對象的依賴
public Class ServiceA {
@Autowired
private ServiceB b;
public ServiceA () {
System.out.println("此時b還未被注入: b = " + b);
}
@PostConstruct
private void initSomthing() {
System.out.println("@PostConstruct將在依賴注入完成後被自動調用: b = " + b);
}
}
參考來源於: