該注解可以實現在運行工程時,自動運行該注解下的方法;
@PostConstruct是java自帶的注解,指的是在項目啟動的時候執行這個方法,也可以理解為在spring容器啟動的時候執行,可作為一些數據的常規化加載,比如數據字典之類的。
被@PostConstruct修飾的方法會在服務器加載Servle的時候運行,并且只會被服務器執行一次。PostConstruct在構造函數之后執行,也就是加載順序
服務器加載Servlet -> servlet 構造函數的加載 -> postConstruct ->init(init是在service 中的初始化方法. 創建service 時發生的事件.) ->Service->destory->predestory->服務器卸載serlvet
那么問題:spring中Constructor、@Autowired、@PostConstruct的順序
Constructor >> @Autowired >> @PostConstruct
依賴注入的字面意思就可以知道,要將對象p注入到對象a,那么首先就必須得生成對象p與對象a,才能執行注入。所以,如果一個類A中有個成員變量p被@Autowired注解,那么@Autowired注入是發生在A的構造方法執行完之后的。
@PostConstruct應用場景:
如果想在生成對象時候完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入,那么就無法在構造函數中實現。為此,可以使用@PostConstruct注解一個方法來完成初始化,@PostConstruct注解的方法將會在依賴注入完成后被自動調用。
測試:新增一個方法,方法上加上@PostConstruct注解,啟動sprigboot項目,可以看到運行結果,指的是在項目啟動的時候執行這個方法