亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring中的SpringApplicationRunListener詳細解析

 更新時間:2023年11月15日 08:38:22   作者:阿孟呀  
這篇文章主要介紹了Spring中的SpringApplicationRunListener詳細解析,SpringApplicationRunListener是一個監(jiān)聽SpringApplication中run方法的接口,在項目啟動過程的各個階段進行事件的發(fā)布,需要的朋友可以參考下

前言

SpringApplicationRunListener是一個監(jiān)聽SpringApplication中run方法的接口。在項目啟動過程的各個階段進行事件的發(fā)布。

實現(xiàn)SpringApplicationRunListener接口的類由類路徑下加載(META-INF/spring.factories)進行初始化。

想要實現(xiàn)SpringApplicationRunListener接口,需要提供能夠接收SpringApplication和String[] args的構(gòu)造器。

SpringApplication.run(CommonsTestApplication.class, args);
                                                            

SpringApplicationRunListener 類方法

SpringApplicationRunListener 的方法在項目啟動的各個階段提供事件發(fā)布的接口。因此可以通過實現(xiàn)SpringApplicationRunListener 接口,達到在啟動的各個過程中進行擴展

public interface SpringApplicationRunListener {
 
	
	void starting();//run方法開始執(zhí)行,發(fā)布ApplicationStartingEvent事件
 
	//環(huán)境準備好時,發(fā)布ApplicationEnvironmentPreparedEvent事件
	void environmentPrepared(ConfigurableEnvironment environment);
 
    //容器的上下文準備初始化完畢,發(fā)布ApplicationContextInitializedEvent
	void contextPrepared(ConfigurableApplicationContext context);
 
	//上下文加載配置時候,對應(yīng)ApplicationPreparedEvent
	void contextLoaded(ConfigurableApplicationContext context);
 
	//上下文刷新且應(yīng)用啟動時,并且在CommandLineRunner和ApplicationRunners還沒喚醒前,發(fā)布程序以及啟動事件ApplicationStartedEvent
	void started(ConfigurableApplicationContext context);
 
	//在上下文刷新,應(yīng)用已經(jīng)啟動,在CommandLineRunner和ApplicationRunners喚醒后,并且在run方法快執(zhí)行結(jié)束前執(zhí)行,發(fā)布ApplicationReadyEvent,代表程序已經(jīng)準備好
	void running(ConfigurableApplicationContext context);
 
	//當(dāng)運行程序失敗時,發(fā)布ApplicationFailedEvent事件。
	void failed(ConfigurableApplicationContext context, Throwable exception);
 
}

實現(xiàn)

1.實現(xiàn)SpringApplicationRunListener接口

注意添加能夠接收SpringApplication 和String[] 的構(gòu)造器

在started方法中添加了自定義的事件發(fā)布。

package com.wzx.listener;
 
import com.wzx.event.TestApplication;
import com.wzx.event.TestApplicationEvent;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
 
/**
 * @Description: TODO
 * @author: wengzx
 * @date: 2021年04月14日 16:01
 */
public class TestSpringApplicationRunListener implements SpringApplicationRunListener {
 
    private final SpringApplication application;
 
    private final String[] args;
 
 
 
    public TestSpringApplicationRunListener(SpringApplication application, String[] args1) {
        this.application = application;
        this.args = args1;
    }
 
    @Override
    public void starting() {
        System.out.println("TestSpringApplicationRunListener is starting");
    }
 
    @Override
    public void environmentPrepared(ConfigurableEnvironment environment) {
        System.out.println("TestSpringApplicationRunListener is environmentPrepared");
    }
 
    @Override
    public void contextPrepared(ConfigurableApplicationContext context) {
        System.out.println("TestSpringApplicationRunListener is contextPrepared");
 
    }
 
    @Override
    public void contextLoaded(ConfigurableApplicationContext context) {
 
        System.out.println("TestSpringApplicationRunListener is contextLoaded");
    }
 
    @Override
    public void started(ConfigurableApplicationContext context) {
        System.out.println("TestSpringApplicationRunListener is started");
        TestApplication testApplication = new TestApplication();
        testApplication.setName("zhangsan");
        testApplication.setAge(23);
        TestApplicationEvent testApplicationEvent = new TestApplicationEvent(testApplication);
        context.publishEvent(testApplicationEvent);
    }
 
    @Override
    public void running(ConfigurableApplicationContext context) {
        System.out.println("TestSpringApplicationRunListener is running");
    }
 
    @Override
    public void failed(ConfigurableApplicationContext context, Throwable exception) {
        System.out.println("TestSpringApplicationRunListener is failed");
    }
}

2.配置META-INF/spring.factories

3.在SpringApplication.run(String... args)方法內(nèi)斷點啟動程序,可以發(fā)現(xiàn)獲得了自定義的程序監(jiān)聽器。

4.查看控制臺輸出

可以看出在各個階段的輸出,可以此類來擴展程序。

到此這篇關(guān)于Spring中的SpringApplicationRunListener詳細解析的文章就介紹到這了,更多相關(guān)SpringApplicationRunListener解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡述Java中進程與線程的關(guān)系_動力節(jié)點Java學(xué)院整理

    簡述Java中進程與線程的關(guān)系_動力節(jié)點Java學(xué)院整理

    在 Java 語言中,對進程和線程的封裝,分別提供了 Process 和 Thread 相關(guān)的一些類。本文首先簡單的介紹如何使用這些類來創(chuàng)建進程和線程
    2017-05-05
  • 解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題

    解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題

    這篇文章主要介紹了解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java觀感示例分享

    java觀感示例分享

    這篇文章主要介紹了java觀感示例,該實例查詢并生成了系統(tǒng)中存在觀感對應(yīng)的按鈕并在用戶點擊相應(yīng)按鈕時將窗口的觀感切換到指定的觀感上
    2014-03-03
  • SpringBoot中獲取profile的方法詳解

    SpringBoot中獲取profile的方法詳解

    這篇文章主要介紹了springboot獲取profile的操作,文中的示例代碼講解詳細,具有很好的參考價值,希望對大家有所幫助
    2022-04-04
  • Java雜談之如何消除代碼中一大串參數(shù)列表

    Java雜談之如何消除代碼中一大串參數(shù)列表

    參數(shù)列表和字面意思差不多,主要是表示該參數(shù)數(shù)量不是固定的,可能會有一個參數(shù),可能多個,不管多少個參數(shù),都放到一個數(shù)組處理,這種參數(shù)叫可變參數(shù)。可變長參數(shù)要放在最后一個參數(shù)位置處理,但是一個函數(shù)里面不能有倆種類型的可變參數(shù)
    2021-10-10
  • SpringBoot 自動配置失效的解決方法

    SpringBoot 自動配置失效的解決方法

    本文主要介紹了SpringBoot 自動配置失效的解決方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • JDBC自定義連接池過程詳解

    JDBC自定義連接池過程詳解

    這篇文章主要介紹了JDBC自定義連接池過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Jackson使用示例-Bean、XML、Json之間相互轉(zhuǎn)換

    Jackson使用示例-Bean、XML、Json之間相互轉(zhuǎn)換

    Jackson是一個強大工具,可用于Json、XML、實體之間的相互轉(zhuǎn)換,JacksonXmlElementWrapper用于指定List等集合類,外圍標(biāo)簽名,JacksonXmlProperty指定包裝標(biāo)簽名,或者指定標(biāo)簽內(nèi)部屬性名,JacksonXmlRootElement指定生成xml根標(biāo)簽的名字,JacksonXmlText指定當(dāng)前這個值
    2024-05-05
  • Spring @Scheduler使用cron表達式時的執(zhí)行問題詳解

    Spring @Scheduler使用cron表達式時的執(zhí)行問題詳解

    Spring給程序猿們帶來了許多便利。下面這篇文章主要給大家介紹了關(guān)于Spring @Scheduler使用cron表達式時的執(zhí)行問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Mybatis 復(fù)雜對象resultMap的使用

    Mybatis 復(fù)雜對象resultMap的使用

    這篇文章主要介紹了Mybatis 復(fù)雜對象resultMap的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論