具體問題特徵:
啟動後,就是出現Started Application in 36.914 seconds後,開始關閉定時任務、nacos服務註冊等內容,中間沒有任何異常資訊,最後出現"程序已結束,退出程式碼為 1"或者是“Process finished with exit code 1”
查到很多可能的情況:Spring Boot 應用自動退出剖析-阿里雲開發者社群
但是經過排查,都不是這些問題。
最後發現是:ApplicationRunner的實現類的run方法上throw Exception,執行一旦異常就向springboot丟擲異常,丟擲之前沒有輸出錯誤資訊,導致了springboot直接啟動服務關閉。
核心問題點在於:不應該在run方法上throw Exception,應該加try catch捕獲異常,這樣就不影響springboot的執行,還能丟擲準確的異常資訊。
具體為什麼丟擲異常springboot就啟動關閉,沒細究原始碼,以後再說。
這個問題最噁心的問題點在於,跟蹤日誌根本跟蹤不到異常內容,只能靠排查,一開始考慮過啟動相應類的問題,但是沒發現這個異常。最後發現在run方法上throw Exception,才猛然反應過來是這個問題導致的。
亂在方法上拋異常是真的坑!