您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關SpringBoot 實現添加容器啟動的初始化邏輯的方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
SpringBoot 啟動類和應用監聽器
首先,SpringBoot 啟動類中可以添加應用的初始化邏輯,但是打包方式不同,添加的地方也有差異。
jar 包:使用內嵌 Tomcat 時,可以直接寫在 main 函數中,且 SpringApplication.run
代碼之前,容器未啟動,此時無法獲取 getBean
實例。war 包:外部部署時,main 函數中的方法不會被執行,可以在 configure 方法中添加初始化邏輯,此時容器未啟動,無法獲取 getBean
實例。
其次,就是自定義容器啟動監聽器類,為其添加 @Componnet
注解:
@Component public class InitContextListener implements ApplicationListener<ContextRefreshedEvent> { private static Logger logger = Logger.getLogger(InitContextListener.class); @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { // 設置全局配置信息文件存儲路徑 String path = ClassUtils.getDefaultClassLoader().getResource("").getPath(); logger.info("onApplicationEvent 項目部署路徑為:"+path); VersionManager.resourcePath = path; // TODO 應用初始化邏輯,容器此時已啟動,getBean 獲取實例 OK } }
IDEA 直接運行
IDEA 中直接運行 SpringBoot 的啟動類,它會執行初始化邏輯:
configure
方法不會執行,main
中的初始化邏輯會生效,onApplicationEvent
監聽方法也會執行。
war 包發布
打成 war 包后,啟動應用,SpringBoot 的啟動類的 main
方法不會執行,configure
方法中的初始化邏輯會生效,onApplicationEvent
監聽方法也會執行。
1、應用啟動之前,先執行 configure 方法:
2、啟動之后的,onApplicationEvent
監聽方法執行:
jar 包發布
打成 jar 包,跟直接運行 IDEA 的結果一樣。
1、應用啟動之前,啟動類的 main
函數 SpringApplication.run
之前的初始化信息:
2、應用啟動之后,啟動類的 main 函數 SpringApplication.run
之后的初始化信息,onApplicationEvent
監聽事件會執行:
啟示錄
記住一種就夠了,用 ApplicationListener
在容器啟動之后,添加應用需要的初始化邏輯,本質上跟定義一個開機啟動的 Servlet 一樣。
只是用 SpringBoot 之后,一個 @Component
注解,就可以替代 web.xml 中對 Servelt 的配置:
<!-- 配置初始化啟動線程 --> <servlet> <servlet-name>initServlet</servlet-name> <servlet-class> Xxx.InitContexServlet </servlet-class> <load-on-startup>3</load-on-startup> </servlet>
上述就是小編為大家分享的SpringBoot 實現添加容器啟動的初始化邏輯的方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。