摘要:在框架中,有多種事件這些時間會在不同的運行時刻發布,來通知監聽者。本文僅僅介紹的事件的監聽。也可以在文件中配置。
spring application listener
在 spring 框架中,有多種事件, 這些時間會在不同的運行時刻發布,來通知監聽者。本文僅僅介紹 SpringApplicationEvent 的事件的監聽。
事件類型EventType | 發布時間 |
---|---|
ApplicationContextInitializedEvent | 在 SpringApplication正在啟動, ApplicationContext 已經準備好了,ApplicationContextInitializers 被調用, bean definitions 被加載之前 |
ApplicationStartingEvent | 在一次啟動之前發布 |
ApplicationEnvironmentPreparedEvent | 在 Environment 準備好之后,會有 context 去使用這一 Environment, 會在 context 創建之前發出 |
ApplicationPreparedEvent | 會在 bean definitions 加載之后,refresh 之前發布 |
ApplicationStartedEvent | context 更新之后,任何應用或命令行啟動調用之前 |
ApplicationReadyEvent | 任何應用或命令行啟動調用之后發布,說明應用已經可以被請求了 |
ApplicationFailedEvent | 啟動發生有異常時發步 |
監聽器需要使用 org.springframework.context.ApplicationListener 這個接口的實例, 其聲明如下:
@FunctionalInterface public interface ApplicationListenerextends EventListener { /** * Handle an application event. * @param event the event to respond to */ void onApplicationEvent(E event); }
需要使用 SpringApplication.addListeners(…?) 或 SpringApplicationBuilder.listeners(…?) 來添加監聽器。也可以在 META-INF/spring.factories 文件中配置:org.springframework.context.ApplicationListener=com.example.project.MyListener。
例子:
public class StartingEventListener implements ApplicationListener{ @Override public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) { System.out.println("called own starting listener"); System.out.println(applicationStartingEvent.getClass()); } }
@SpringBootApplication public class DemoApplication { public static void main(String[] args){ SpringApplication application = new SpringApplication(DemoApplication.class); application.addListeners(new StartingEventListener()); application.run(args); } }
終端運行 jar 包:
$ java -jar build/libs/springlisteners-0.0.1-SNAPSHOT.jar called own starting listener class org.springframework.boot.context.event.ApplicationStartingEvent . ____ _ __ _ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| | ) ) ) ) " |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3.RELEASE)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/73697.html
摘要:在創建之前,實際上觸發了一些事件,因此不能將偵聽器注冊為。使用的事件發布機制發送應用程序事件,該機制的一部分確保在子環境中發布給偵聽器的事件也會在任何祖先上下文中被發布給監聽器。 23. SpringApplication SpringApplication類提供了一種方便的方法來引導從main()方法開始的Spring應用程序。在許多情況下,你可以委托給靜態SpringApplica...
摘要:參考創建所有運行監聽器并發布應用啟動事件來看下創建運行監聽器相關的源碼創建邏輯和之前實例化初始化器和監聽器的一樣,一樣調用的是方法來獲取配置的監聽器名稱并實例化所有的類。 上篇《Spring Boot 2.x 啟動全過程源碼分析(一)入口類剖析》我們分析了 Spring Boot 入口類 SpringApplication 的源碼,并知道了其構造原理,這篇我們繼續往下面分析其核心 ru...
摘要:設置應用上線文初始化器的作用是什么源碼如下。來看下方法源碼,其實就是初始化一個應用上下文初始化器實例的集合。設置監聽器和設置初始化器調用的方法是一樣的,只是傳入的類型不一樣,設置監聽器的接口類型為,對應的文件配置內容請見下方。 Spring Boot 的應用教程我們已經分享過很多了,今天來通過源碼來分析下它的啟動過程,探究下 Spring Boot 為什么這么簡便的奧秘。 本篇基于 S...
摘要:有了配置文件之后,啟動程序,我們首先可以看到日志輸入,由此可以看出程序讀取了的配置。首先,根據的全局查找功能,直接搜索這些詞出現的位置,進行定位,可以找到這個日志出現于方法之中。由于我們的配置文件在下,所以只要留意當為的程序執行情況即可。 前言 上文《一文掌握 Spring Boot Profiles》 是對 Spring Boot Profiles 的介紹和使用,因此本文將從源碼角度...
閱讀 2671·2023-04-26 00:42
閱讀 2817·2021-09-24 10:34
閱讀 3832·2021-09-24 09:48
閱讀 4167·2021-09-03 10:28
閱讀 2587·2019-08-30 15:56
閱讀 2783·2019-08-30 15:55
閱讀 3274·2019-08-29 12:46
閱讀 2254·2019-08-28 17:52