淺談@PostConstruct不被調(diào)用的原因
@PostConstruct不被調(diào)用的原因
如果在配置文件中配置使用,延遲加載的話(huà)
如圖
被@Service等注解的類(lèi),需要在注入使用的時(shí)候,才會(huì)被初始化.如果TableInit類(lèi)只是被定義而沒(méi)有在其他地方引用的話(huà),@PostConstrut注釋的方法是不會(huì)執(zhí)行的.
@PostConstruct詳解
定義
@PostContruct是Java自帶的注解,在方法上加該注解會(huì)在項(xiàng)目啟動(dòng)的時(shí)候執(zhí)行該方法,也可以理解為在spring容器初始化的時(shí)候執(zhí)行該方法。
從Java EE5規(guī)范開(kāi)始,Servlet中增加了兩個(gè)影響Servlet生命周期的注解,@PostConstruct和@PreDestroy,這兩個(gè)注解被用來(lái)修飾一個(gè)非靜態(tài)的void()方法。
用法
@PostConstruct public void someMethod(){}
或者
public @PostConstruct void someMethod(){}
作用
@PostConstruct注解的方法在項(xiàng)目啟動(dòng)的時(shí)候執(zhí)行這個(gè)方法,也可以理解為在spring容器啟動(dòng)的時(shí)候執(zhí)行,可作為一些數(shù)據(jù)的常規(guī)化加載,比如數(shù)據(jù)字典之類(lèi)的。
執(zhí)行順序
其實(shí)從依賴(lài)注入的字面意思就可以知道,要將對(duì)象p注入到對(duì)象a,那么首先就必須得生成對(duì)象a和對(duì)象p,才能執(zhí)行注入。所以,如果一個(gè)類(lèi)A中有個(gè)成員變量p被@Autowried注解,那么@Autowired注入是發(fā)生在A的構(gòu)造方法執(zhí)行完之后的。
如果想在生成對(duì)象時(shí)完成某些初始化操作,而偏偏這些初始化操作又依賴(lài)于依賴(lài)注入,那么久無(wú)法在構(gòu)造函數(shù)中實(shí)現(xiàn)。為此,可以使用@PostConstruct注解一個(gè)方法來(lái)完成初始化,@PostConstruct注解的方法將會(huì)在依賴(lài)注入完成后被自動(dòng)調(diào)用。
Constructor >> @Autowired >> @PostConstruct
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java判定一個(gè)數(shù)值是否在指定的開(kāi)閉區(qū)間范圍內(nèi)
這篇文章主要給大家介紹了關(guān)于使用Java判定一個(gè)數(shù)值是否在指定的開(kāi)閉區(qū)間范圍內(nèi)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09Java的可變參數(shù)與Collections類(lèi)的功能示例解析
這篇文章主要為大家介紹了Java的可變參數(shù)與Collections類(lèi)的功能示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05一篇文章帶你了解JAVA面對(duì)對(duì)象之繼承與修飾符
這篇文章主要介紹了Java面向?qū)ο缶幊讨?lèi)的繼承,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java面向?qū)ο缶幊填?lèi)的概念、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2021-08-08關(guān)于Springboot打成JAR包后讀取外部配置文件的問(wèn)題
這篇文章主要介紹了關(guān)于Springboot打成JAR包后讀取外部配置文件的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Java結(jié)束線(xiàn)程的三種方法及該如何選擇
這篇文章主要介紹了Java結(jié)束線(xiàn)程的三種方法及該如何選擇,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03SpringAOP 如何通過(guò)JoinPoint獲取參數(shù)名和值
這篇文章主要介紹了SpringAOP 通過(guò)JoinPoint獲取參數(shù)名和值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06SpringBoot+Quartz+數(shù)據(jù)庫(kù)存儲(chǔ)的完美集合
這篇文章主要介紹了SpringBoot+Quartz+數(shù)據(jù)庫(kù)存儲(chǔ)的示例代碼,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02SpringBoot整合mybatisplus和druid的示例詳解
這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08java使用xstream實(shí)現(xiàn)xml文件和對(duì)象之間的相互轉(zhuǎn)換
xml是一個(gè)用途比較廣泛的文件類(lèi)型,在java里也自帶解析xml的包,但是本文使用的是xstream來(lái)實(shí)現(xiàn)xml和對(duì)象之間的相互轉(zhuǎn)換,xstream是一個(gè)第三方開(kāi)源框架,使用起來(lái)比較方便,對(duì)java?xml和對(duì)象轉(zhuǎn)換相關(guān)知識(shí)感興趣的朋友一起看看吧2023-09-09