亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot啟動事件和監聽器的示例分析

發布時間:2021-12-16 16:52:52 來源:億速云 閱讀:530 作者:小新 欄目:安全技術

這篇文章將為大家詳細講解有關Spring Boot啟動事件和監聽器的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Spring Boot 啟動事件順序

1、ApplicationStartingEvent

這個事件在 Spring Boot 應用運行開始時,且進行任何處理之前發送(除了監聽器和初始化器注冊之外)。

2、ApplicationEnvironmentPreparedEvent

這個事件在當已知要在上下文中使用 Spring 環境(Environment)時,在 Spring 上下文(context)創建之前發送。

3、ApplicationContextInitializedEvent

這個事件在當 Spring  應用上下文(ApplicationContext)準備好了,并且應用初始化器(ApplicationContextInitializers)已經被調用,在  bean 的定義(bean definitions)被加載之前發送。

4、ApplicationPreparedEvent

這個事件是在 Spring 上下文(context)刷新之前,且在 bean 的定義(bean definitions)被加載之后發送。

5、ApplicationStartedEvent

這個事件是在 Spring 上下文(context)刷新之后,且在 application/ command-line runners  被調用之前發送。

6、AvailabilityChangeEvent

這個事件緊隨上個事件之后發送,狀態:ReadinessState.CORRECT,表示應用已處于活動狀態。

7、ApplicationReadyEvent

這個事件在任何 application/ command-line runners 調用之后發送。

8、AvailabilityChangeEvent

這個事件緊隨上個事件之后發送,狀態:ReadinessState.ACCEPTING_TRAFFIC,表示應用可以開始準備接收請求了。

9、ApplicationFailedEvent

這個事件在應用啟動異常時進行發送。

上面所介紹的這些事件列表僅包括綁定到 SpringApplication 的 SpringApplicationEvents  事件,除了這些事件以外,以下事件也會在 ApplicationPreparedEvent 之后和 ApplicationStartedEvent  之前發送:

  • WebServerInitializedEvent

這個 Web 服務器初始化事件在 WebServer 啟動之后發送,對應的還有  ServletWebServerInitializedEvent(Servlet Web  服務器初始化事件)、ReactiveWebServerInitializedEvent(響應式 Web 服務器初始化事件)。

  • ContextRefreshedEvent

這個上下文刷新事件是在 Spring 應用上下文(ApplicationContext)刷新之后發送。

自定義啟動事件監聽器

既然我們知道了 Spring Boot  在啟動過程中的各個事件,那么我們就可以在每個環節來處理一些我們想做的事情,只需要自定義一個監聽器來監聽某個事件就可以了。

比如我們想在上面的第 8 步,即應用啟動完成可以接收請求了,我們簡單輸出一個成功標識。

1、新建監聽器

import lombok.extern.slf4j.Slf4j; import org.springframework.boot.availability.AvailabilityChangeEvent; import org.springframework.boot.availability.ReadinessState; import org.springframework.context.ApplicationListener;  /**  * 來源微信公眾號:Java技術棧  */ @Slf4j public class JavastackListener implements ApplicationListener<AvailabilityChangeEvent> {      @Override     public void onApplicationEvent(AvailabilityChangeEvent event) {         log.info("監聽到事件:" + event);         if (ReadinessState.ACCEPTING_TRAFFIC == event.getState()){             log.info("應用啟動完成,可以請求了&hellip;&hellip;");         }     }  }

新建一個自定義監聽器,實現了 ApplicationListener 接口,泛型 AvailabilityChangeEvent 表示僅僅監聽  AvailabilityChangeEvent 事件。

因第 8 步的事件和第 6 步的事件同名,我們可以根據事件的狀態來區分到底是哪一個環節的事件 。

2、注冊監聽器

注冊監聽器有兩種方式:

1、在資源目錄中的 META-INF/spring.factories 文件中自動注冊:

org.springframework.context.ApplicationListener=\ cn.javastack.springboot.features.listener.JavastackListener

2、如果是監聽 Spring 應用上下文(ApplicationContext)創建之后的事件,可以直接在監聽器上使用 @Component  注解即可,否則需要使用第一種方法的自動注冊,因為 ApplicationContext 并未創建,這時的 Bean 是不能被加載的。

3、應用啟動

下面來看下啟動日志:

Spring Boot啟動事件和監聽器的示例分析

可以看到同時輸出了第 6 步和 8 步的監聽日志,但只輸出第 8 步的啟動完成日志,自定義監聽實現成功。

關于“Spring Boot啟動事件和監聽器的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

敖汉旗| 德昌县| 肥西县| 黄平县| 剑川县| 钟祥市| 绍兴县| 博野县| 运城市| 贡嘎县| 汪清县| 广宁县| 浮山县| 冕宁县| 探索| 灵璧县| 旬邑县| 莆田市| 临澧县| 本溪| 红桥区| 河西区| 马边| 黄陵县| 弥勒县| 麟游县| 曲靖市| 梓潼县| 茶陵县| 虹口区| 尚义县| 蓝山县| 射阳县| 柯坪县| 湘潭县| 定襄县| 成都市| 秦皇岛市| 美姑县| 盐山县| 沈丘县|