在Spring Boot應用啟動時如何執行程式碼? -Dukesletter

banq發表於2020-08-14

有時,您的應用程式需要在啟動時載入或預處理一些資訊。如果您正在使用像Spring Boot這樣的複雜框架來管理物件的生命週期,那麼何時才是正確的時刻?spring提供了哪些機制來執行該過程?
Spring Boot具有多種機制,Tom Hombergs在以下文章中總結了主要機制:“ 在Spring Boot應用程式啟動時執行程式碼 ”。
 
作為個人建議:切勿使用@PostConstruct或載入或處理資訊InitializingBean。
 

Spring在建立應用程式上下文時會呼叫這些方法,並且該過程在主執行緒中執行,從而鎖定了其他初始化過程。如果您有多個帶有的物件@PostConstruct,它們將在主執行緒中按順序執行,並且您不知道執行的順序。

我個人更喜歡使用CommandLineRunner,ApplicationRunner或者ApplicationListener,因為一旦應用程式上下文已經建立,包括HTTP容器(Tomcat或碼頭),它們被執行,因為上下文已準備就緒,你可以並行執行多個程式。
如果要正確管理如何用訊號通知容器的就緒狀態,則如何初始化伺服器很重要。
 

相關文章