欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決@PostConstruct注解導(dǎo)致的程序無(wú)法啟動(dòng)(@PostConstruct的執(zhí)行)

 更新時(shí)間:2024年01月30日 10:19:17   作者:是菜菜的小嚴(yán)惜哎  
這篇文章主要介紹了解決@PostConstruct注解導(dǎo)致的程序無(wú)法啟動(dòng)(@PostConstruct的執(zhí)行)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

樓主遇到一個(gè)問(wèn)題,問(wèn)題大概是這樣的

問(wèn)題

1、業(yè)務(wù)原因,需要程序初始化啟動(dòng)后自動(dòng)執(zhí)行一個(gè)程序,這個(gè)程序處在一個(gè)死循環(huán)內(nèi),不會(huì)結(jié)束,保持自動(dòng)執(zhí)行

2、程序啟動(dòng)后,其他所有接口無(wú)法調(diào)用

處理及結(jié)果

然后我開始排查啊,排查啊

我先嘗試重啟服務(wù),重新清空IDE的緩存,重啟電腦,換環(huán)境執(zhí)行,結(jié)果都不行

然后我在每個(gè)方法都打了斷點(diǎn),開始執(zhí)行,這個(gè)時(shí)候問(wèn)題開始露頭

我發(fā)現(xiàn)它走了@PostConstruct注解的方法,但是我這個(gè)方法是個(gè)死循環(huán),不會(huì)結(jié)束的?。?!

我大膽猜測(cè),是否是因?yàn)锧PostConstruct注解的方法未結(jié)束,導(dǎo)致的無(wú)法執(zhí)行

于是我寫了一個(gè)測(cè)試工程,進(jìn)行測(cè)試,結(jié)果復(fù)現(xiàn)了這個(gè)問(wèn)題?。。。。。?/p>

我查閱了一下資料,大概明白了問(wèn)題所在:

springboot啟動(dòng)過(guò)程

springboot的bean加載的過(guò)程是這樣的,程序啟動(dòng)時(shí),springboot會(huì)把標(biāo)記為bean的類或者接口自動(dòng)進(jìn)行全局的單例實(shí)例化,如果用戶指定標(biāo)記了初始化的順序,springboot則會(huì)按照用戶指定的順序進(jìn)行初始化,否則就會(huì)按照默認(rèn)的順序進(jìn)行初始化,在這個(gè)過(guò)程中,如果一個(gè)bean所在的類或者接口存在@PostConstruct注解,springboot就會(huì)在執(zhí)行完這個(gè)bean的構(gòu)造方法之后執(zhí)行標(biāo)記有@PostConstruct注解的方法,然后實(shí)例化下一個(gè)bean

如果說(shuō),帶有@PostConstruct注解的方法執(zhí)行時(shí)間很長(zhǎng),那就會(huì)影響springboot對(duì)bean的實(shí)例化時(shí)間,進(jìn)而就會(huì)間接影響到程序的初始化啟動(dòng),如果springboot不初始化完bean,是不會(huì)打開端口提供服務(wù)的,所以在@PostConstruct注解的方法執(zhí)行完之前,應(yīng)用不可訪問(wèn)

所以說(shuō),對(duì)于輕量級(jí)的邏輯,可以放在@PostConstruct注解的方法里,非常耗時(shí)的邏輯,可以考慮使用多線程處理,也可以放棄@PostConstruct注解,改用CommandLineRunner和ApplicationRunner 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java多線程編程中LockSupport類的線程阻塞用法

    詳解Java多線程編程中LockSupport類的線程阻塞用法

    LockSupport類提供了park()和unpark()兩個(gè)方法來(lái)實(shí)現(xiàn)線程的阻塞和喚醒,下面我們就來(lái)詳解Java多線程編程中LockSupport類的線程阻塞用法:
    2016-07-07
  • SpringBoot中yml的數(shù)據(jù)綁定示例

    SpringBoot中yml的數(shù)據(jù)綁定示例

    本文主要介紹了SpringBoot中yml的數(shù)據(jù)綁定示例,借助于YAML的簡(jiǎn)潔語(yǔ)法和結(jié)構(gòu)化特性,我們能夠輕松地管理應(yīng)用程序的配置信息,使得配置文件更加清晰易讀,感興趣的可以了解一下
    2023-11-11
  • Java之Springcloud Gateway內(nèi)置路由案例講解

    Java之Springcloud Gateway內(nèi)置路由案例講解

    這篇文章主要介紹了Java之Springcloud Gateway內(nèi)置路由案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • IDEA集成Sonar的完整流程

    IDEA集成Sonar的完整流程

    這篇文章主要介紹了IDEA集成Sonar的完整流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 簡(jiǎn)單介紹Java?方法的重載、可變參數(shù)、作用域

    簡(jiǎn)單介紹Java?方法的重載、可變參數(shù)、作用域

    這篇文章主要簡(jiǎn)單介紹Java?方法的重載、可變參數(shù)、作用域的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • java報(bào)錯(cuò)之springboot3+vue2項(xiàng)目web服務(wù)層報(bào)錯(cuò)總結(jié)

    java報(bào)錯(cuò)之springboot3+vue2項(xiàng)目web服務(wù)層報(bào)錯(cuò)總結(jié)

    java入門學(xué)習(xí),隨手記錄一下開發(fā)過(guò)程中產(chǎn)生的報(bào)錯(cuò),有些錯(cuò)誤是網(wǎng)上搜索再加上自己嘗試,隨手引用了一些其他人的記錄,也是留給自己看的,或是希望能對(duì)其他初學(xué)者有幫助

    2023-06-06
  • java如何獲取視頻文件的編解碼器代碼示例

    java如何獲取視頻文件的編解碼器代碼示例

    這篇文章主要給大家介紹了關(guān)于java如何獲取視頻文件的編解碼器的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-05-05
  • SpringBoot使用Sharding-JDBC實(shí)現(xiàn)數(shù)據(jù)分片和讀寫分離的方法

    SpringBoot使用Sharding-JDBC實(shí)現(xiàn)數(shù)據(jù)分片和讀寫分離的方法

    本文主要介紹了SpringBoot使用Sharding-JDBC實(shí)現(xiàn)數(shù)據(jù)分片和讀寫分離,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java集合類之Map集合的特點(diǎn)及使用詳解

    Java集合類之Map集合的特點(diǎn)及使用詳解

    這篇文章主要為大家詳細(xì)介紹一下Java集合類中Map的特點(diǎn)及使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下
    2022-08-08
  • JAVA日常開發(fā)中讀寫XML的方法詳解

    JAVA日常開發(fā)中讀寫XML的方法詳解

    這篇文章主要介紹了JAVA日常開發(fā)中讀寫XML的相關(guān)資料,詳細(xì)講解了在Java中如何使用DOM(文檔對(duì)象模型)和SAX(簡(jiǎn)單API?for?XML)兩種方式讀取XML文件,以及如何使用DOM和JAXB(Java?Architecture?for?XML?Binding)兩種方式寫入XML文件,需要的朋友可以參考下
    2024-12-12

最新評(píng)論