解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場(chǎng)景
更新時(shí)間:2023年12月26日 09:23:30 作者:zero
這篇文章主要介紹了解讀CommandLineRunner和@PostConstruct區(qū)別與應(yīng)用場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
時(shí)機(jī)和觸發(fā)方式
- CommandLineRunner 接口的run方法在整個(gè)Spring Boot應(yīng)用程序啟動(dòng)完成后執(zhí)行。它是在應(yīng)用程序啟動(dòng)的最后階段觸發(fā)的,這樣你可以確保在Spring Boot應(yīng)用程序完全啟動(dòng)并準(zhǔn)備好接受請(qǐng)求之前執(zhí)行你的邏輯。
- @PostConstruct注解標(biāo)注的方法會(huì)在Spring容器實(shí)例化Bean并完成依賴注入后立即執(zhí)行。這意味著它是在Bean的生命周期中非常早的階段執(zhí)行的,但在整個(gè)Spring應(yīng)用程序完全啟動(dòng)之前。
參數(shù)傳遞
- CommandLineRunner接口的run方法可以接受一個(gè)字符串?dāng)?shù)組參數(shù),這個(gè)數(shù)組包含了應(yīng)用程序啟動(dòng)時(shí)傳遞的命令行參數(shù)。這為你提供了一種在應(yīng)用程序啟動(dòng)時(shí)動(dòng)態(tài)配置或執(zhí)行不同的邏輯的機(jī)會(huì)。
- @PostConstruct注解的方法不能接受參數(shù),因?yàn)樗峭ㄟ^(guò)反射調(diào)用的。這意味著你不能直接在方法中獲取Spring Boot應(yīng)用程序啟動(dòng)時(shí)的參數(shù)。
應(yīng)用場(chǎng)景
CommandLineRunner
- 適用于整個(gè)SpringBoot程序啟動(dòng)后執(zhí)行的初始化邏輯
- 可以執(zhí)行程序級(jí)別操作,如執(zhí)行定時(shí)任務(wù)、執(zhí)行數(shù)據(jù)加載等
- 提供了訪問(wèn)命令行參數(shù)的能力,可以在run方法中獲取應(yīng)用程序啟動(dòng)時(shí)傳遞的參數(shù)。
@PostConstruct
- 用于spring Bean初始化階段執(zhí)行的一些邏輯
- 一般用于與Bean屬性初始化的相關(guān)操作,比如初始化資源、建立鏈接等等
使用方式
CommandLineRunner
@Component public class MyCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { // 在應(yīng)用程序啟動(dòng)后執(zhí)行的邏輯 } }
@PostConstruct
@Component public class MyBean { @PostConstruct public void init() { // 在Bean初始化階段執(zhí)行的邏輯 } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java連接mysql數(shù)據(jù)庫(kù)亂碼的解決方法
這篇文章主要介紹通過(guò)java連接mysql數(shù)據(jù)庫(kù)的時(shí)候,頁(yè)面出現(xiàn)亂碼,這里簡(jiǎn)單分享下解決方法, 需要的朋友可以參考下2013-05-05詳解springmvc之json數(shù)據(jù)交互controller方法返回值為簡(jiǎn)單類型
這篇文章主要介紹了springmvc之json數(shù)據(jù)交互controller方法返回值為簡(jiǎn)單類型,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05詳解JAVA抓取網(wǎng)頁(yè)的圖片,JAVA利用正則表達(dá)式抓取網(wǎng)站圖片
這篇文章主要介紹了詳解JAVA抓取網(wǎng)頁(yè)的圖片,JAVA利用正則表達(dá)式抓取網(wǎng)站圖片,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07javaweb圖書商城設(shè)計(jì)之用戶模塊(1)
這篇文章主要介紹了javaweb圖書商城設(shè)計(jì)之用戶模塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11spring中@ComponentScan自動(dòng)掃描并指定掃描規(guī)則
本文主要介紹了spring中@ComponentScan自動(dòng)掃描并指定掃描規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04