摘要:在框架中,有多種事件這些時(shí)間會(huì)在不同的運(yùn)行時(shí)刻發(fā)布,來(lái)通知監(jiān)聽(tīng)者。本文僅僅介紹的事件的監(jiān)聽(tīng)。也可以在文件中配置。
spring application listener
在 spring 框架中,有多種事件, 這些時(shí)間會(huì)在不同的運(yùn)行時(shí)刻發(fā)布,來(lái)通知監(jiān)聽(tīng)者。本文僅僅介紹 SpringApplicationEvent 的事件的監(jiān)聽(tīng)。
事件類型EventType | 發(fā)布時(shí)間 |
---|---|
ApplicationContextInitializedEvent | 在 SpringApplication正在啟動(dòng), ApplicationContext 已經(jīng)準(zhǔn)備好了,ApplicationContextInitializers 被調(diào)用, bean definitions 被加載之前 |
ApplicationStartingEvent | 在一次啟動(dòng)之前發(fā)布 |
ApplicationEnvironmentPreparedEvent | 在 Environment 準(zhǔn)備好之后,會(huì)有 context 去使用這一 Environment, 會(huì)在 context 創(chuàng)建之前發(fā)出 |
ApplicationPreparedEvent | 會(huì)在 bean definitions 加載之后,refresh 之前發(fā)布 |
ApplicationStartedEvent | context 更新之后,任何應(yīng)用或命令行啟動(dòng)調(diào)用之前 |
ApplicationReadyEvent | 任何應(yīng)用或命令行啟動(dòng)調(diào)用之后發(fā)布,說(shuō)明應(yīng)用已經(jīng)可以被請(qǐng)求了 |
ApplicationFailedEvent | 啟動(dòng)發(fā)生有異常時(shí)發(fā)步 |
監(jiān)聽(tīng)器需要使用 org.springframework.context.ApplicationListener 這個(gè)接口的實(shí)例, 其聲明如下:
@FunctionalInterface public interface ApplicationListenerextends EventListener { /** * Handle an application event. * @param event the event to respond to */ void onApplicationEvent(E event); }
需要使用 SpringApplication.addListeners(…?) 或 SpringApplicationBuilder.listeners(…?) 來(lái)添加監(jiān)聽(tīng)器。也可以在 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); } }
終端運(yùn)行 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)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73697.html
摘要:在創(chuàng)建之前,實(shí)際上觸發(fā)了一些事件,因此不能將偵聽(tīng)器注冊(cè)為。使用的事件發(fā)布機(jī)制發(fā)送應(yīng)用程序事件,該機(jī)制的一部分確保在子環(huán)境中發(fā)布給偵聽(tīng)器的事件也會(huì)在任何祖先上下文中被發(fā)布給監(jiān)聽(tīng)器。 23. SpringApplication SpringApplication類提供了一種方便的方法來(lái)引導(dǎo)從main()方法開始的Spring應(yīng)用程序。在許多情況下,你可以委托給靜態(tài)SpringApplica...
摘要:參考創(chuàng)建所有運(yùn)行監(jiān)聽(tīng)器并發(fā)布應(yīng)用啟動(dòng)事件來(lái)看下創(chuàng)建運(yùn)行監(jiān)聽(tīng)器相關(guān)的源碼創(chuàng)建邏輯和之前實(shí)例化初始化器和監(jiān)聽(tīng)器的一樣,一樣調(diào)用的是方法來(lái)獲取配置的監(jiān)聽(tīng)器名稱并實(shí)例化所有的類。 上篇《Spring Boot 2.x 啟動(dòng)全過(guò)程源碼分析(一)入口類剖析》我們分析了 Spring Boot 入口類 SpringApplication 的源碼,并知道了其構(gòu)造原理,這篇我們繼續(xù)往下面分析其核心 ru...
摘要:設(shè)置應(yīng)用上線文初始化器的作用是什么源碼如下。來(lái)看下方法源碼,其實(shí)就是初始化一個(gè)應(yīng)用上下文初始化器實(shí)例的集合。設(shè)置監(jiān)聽(tīng)器和設(shè)置初始化器調(diào)用的方法是一樣的,只是傳入的類型不一樣,設(shè)置監(jiān)聽(tīng)器的接口類型為,對(duì)應(yīng)的文件配置內(nèi)容請(qǐng)見(jiàn)下方。 Spring Boot 的應(yīng)用教程我們已經(jīng)分享過(guò)很多了,今天來(lái)通過(guò)源碼來(lái)分析下它的啟動(dòng)過(guò)程,探究下 Spring Boot 為什么這么簡(jiǎn)便的奧秘。 本篇基于 S...
摘要:有了配置文件之后,啟動(dòng)程序,我們首先可以看到日志輸入,由此可以看出程序讀取了的配置。首先,根據(jù)的全局查找功能,直接搜索這些詞出現(xiàn)的位置,進(jìn)行定位,可以找到這個(gè)日志出現(xiàn)于方法之中。由于我們的配置文件在下,所以只要留意當(dāng)為的程序執(zhí)行情況即可。 前言 上文《一文掌握 Spring Boot Profiles》 是對(duì) Spring Boot Profiles 的介紹和使用,因此本文將從源碼角度...
閱讀 2650·2023-04-26 00:42
閱讀 2799·2021-09-24 10:34
閱讀 3810·2021-09-24 09:48
閱讀 4145·2021-09-03 10:28
閱讀 2577·2019-08-30 15:56
閱讀 2771·2019-08-30 15:55
閱讀 3254·2019-08-29 12:46
閱讀 2244·2019-08-28 17:52