最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中的監(jiān)聽器SpringApplicationRunListener詳解

 更新時間:2023年11月08日 10:03:13   作者:你就像甜甜的益達(dá)  
這篇文章主要介紹了Spring中的監(jiān)聽器SpringApplicationRunListener詳解,命名我們就可以知道它是一個監(jiān)聽者,分析springboot啟動流程我們會發(fā)現(xiàn),它其實是用來在整個啟動流程中接收不同執(zhí)行點事件通知的監(jiān)聽者,需要的朋友可以參考下

SpringApplicationRunListenerde作用

命名我們就可以知道它是一個監(jiān)聽者,分析springboot啟動流程我們會發(fā)現(xiàn),它其實是用來在整個啟動流程中接收不同執(zhí)行點事件通知的監(jiān)聽者

SpringApplicationRunListener接口規(guī)定了SpringBoot的生命周期,在各個生命周期廣播相應(yīng)的事件,調(diào)用實際的ApplicationListener類。

源碼分析

在這里插入圖片描述

在這里插入圖片描述

前面分析過,前面講過啟動的時候會先加載spring會加載所有jar包下的META-INF/spring.factories,然后緩存起來,這里就可以通過類型進(jìn)行獲取;

然后通過反射,實例化SpringApplicationRunListener類;注意,前面講過實例化的類型,一個是SpringApplication類型,一個String數(shù)組類型;

在這里插入圖片描述

然后就會在springboot容器的各個階段通過封裝的類SpringApplicationRunListeners進(jìn)行處理;

方法詳解

public interface SpringApplicationRunListener {

     //剛執(zhí)行run方法時
    void started();
     //環(huán)境建立好時候
    void environmentPrepared(ConfigurableEnvironment environment);
     //上下文建立好的時候
    void contextPrepared(ConfigurableApplicationContext context);
    //上下文載入配置時候
    void contextLoaded(ConfigurableApplicationContext context);
    //上下文刷新完成后,run方法執(zhí)行完之前
    void finished(ConfigurableApplicationContext context, Throwable exception);

}

具體使用

新建類實現(xiàn)SpringApplicationRunListener,需要構(gòu)造方法,里面兩個參數(shù)SpringApplication sa, String[] args;

在resources下新建META-INF\spring.factories文件,文件里面將新建的實現(xiàn)類的類路徑配置進(jìn)去:

org.springframework.boot.SpringApplicationRunListener=com.study.springbootplus.config.MyApplicationRunListener
public class MyApplicationRunListener implements SpringApplicationRunListener {

  private final SpringApplication application;
  private final String[] args;

  public MyApplicationRunListener(SpringApplication sa, String[] args) {
    this.application = sa;
    this.args = args;
  }

  @Override
  public void starting() {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的starting方法...");
  }

  @Override
  public void environmentPrepared(ConfigurableEnvironment environment) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的environmentPrepared方法...");
  }

  @Override
  public void contextPrepared(ConfigurableApplicationContext context) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的contextPrepared方法...");
  }

  @Override
  public void contextLoaded(ConfigurableApplicationContext context) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的contextLoaded方法...");
  }

  @Override
  public void running(ConfigurableApplicationContext context) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的running方法...");
  }

  @Override
  public void failed(ConfigurableApplicationContext context, Throwable exception) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的failed方法...");
  }

  @Override
  public void started(ConfigurableApplicationContext context) {
    System.out.println("服務(wù)啟動RunnerTest  SpringApplicationRunListener的started方法...");
  }
}

注意事項

  • 任何一個SpringApplicationRunListener實現(xiàn)類的構(gòu)造方法都需要有兩個構(gòu)造參數(shù);源碼里面分析了,需要根據(jù)指定類型的構(gòu)造方法初始化類;
  • SpringApplicationRunListener的配置在resources下新建META-INF\spring.factories文件,文件里面將新建的實現(xiàn)類的類路徑配置進(jìn)去,對應(yīng)的key是org.springframework.boot.SpringApplicationRunListener;
  • SpringApplicationRunListener屬于應(yīng)用程序啟動層面的監(jiān)聽器,在springboot啟動時候,調(diào)用run方法進(jìn)行反射加載初始化。此時上下文還沒有加載,如果通過@Compnant是起不了作用的.

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

相關(guān)文章

  • Java數(shù)據(jù)類型與變量詳解

    Java數(shù)據(jù)類型與變量詳解

    文章主要介紹了Java中的字面常量、數(shù)據(jù)類型、變量、類型轉(zhuǎn)換和字符串類型,涵蓋了基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,以及不同類型之間的轉(zhuǎn)換和運算規(guī)則,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • springboot3.x使用@NacosValue無法獲取配置信息的解決過程

    springboot3.x使用@NacosValue無法獲取配置信息的解決過程

    在Spring Boot 3.x中升級Nacos依賴后,使用@NacosValue無法動態(tài)獲取配置,通過引入Spring Cloud依賴和使用@RefreshScope@Value結(jié)合的方式解決了問題
    2025-12-12
  • 命令行中 javac、java、javap 的使用小結(jié)

    命令行中 javac、java、javap 的使用小結(jié)

    使用 java 命令運行一個.class文件,需要使用該類的全限定類名,同時需要在當(dāng)前路徑下有該類的包層次文件夾,這篇文章主要介紹了命令行中 javac、java、javap 的使用小結(jié),需要的朋友可以參考下
    2023-07-07
  • java并發(fā)編程專題(四)----淺談(JUC)Lock鎖

    java并發(fā)編程專題(四)----淺談(JUC)Lock鎖

    這篇文章主要介紹了java并發(fā)編程(JUC)Lock鎖的相關(guān)內(nèi)容,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java編程將漢字轉(zhuǎn)Unicode碼代碼示例

    Java編程將漢字轉(zhuǎn)Unicode碼代碼示例

    偶然看到Unicode編碼,覺得挺有意思,于是搜索了相關(guān)資料,準(zhǔn)備學(xué)習(xí)學(xué)習(xí),本文主要是一個Unicode編碼的簡單Java實現(xiàn),需要的朋友可以了解下。
    2017-10-10
  • java中反射(Reflection)機制舉例詳解

    java中反射(Reflection)機制舉例詳解

    Java中的反射機制是指Java程序在運行期間可以獲取到一個對象的全部信息,這篇文章主要介紹了java中反射(Reflection)機制的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • SpringBoot實現(xiàn)系統(tǒng)監(jiān)控的完整示例

    SpringBoot實現(xiàn)系統(tǒng)監(jiān)控的完整示例

    本文介紹了如何對SpringBoot應(yīng)用進(jìn)行系統(tǒng)監(jiān)控,包括監(jiān)控的重要性、詳細(xì)步驟以及最佳實踐,監(jiān)控可以幫助我們預(yù)防問題、快速定位和解決,提升系統(tǒng)性能和開發(fā)體驗,需要的朋友可以參考下
    2025-12-12
  • jconsole使用介紹(圖文)

    jconsole使用介紹(圖文)

    大家在學(xué)習(xí)java的時候,難免會對jvm進(jìn)行一些深入的了解。推薦大家使用jdk下面的jconsole.exe來輔助理解jvm的一些概念
    2015-12-12
  • Netty學(xué)習(xí)教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty學(xué)習(xí)教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty是由JBOSS提供的一個Java開源框架,之前已經(jīng)給大家簡單介紹了一些基礎(chǔ)與使用,下面這篇文章主要給大家介紹了關(guān)于Netty與Marshalling結(jié)合發(fā)送對象的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • java中初始化MediaRecorder的實現(xiàn)方法

    java中初始化MediaRecorder的實現(xiàn)方法

    這篇文章主要介紹了java中初始化MediaRecorder的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10

最新評論

古交市| 综艺| 洛宁县| 醴陵市| 郯城县| 金阳县| 外汇| 景东| 安多县| 蛟河市| 新沂市| 阜南县| 张家港市| 新竹市| 菏泽市| 台州市| 明光市| 宁南县| 林州市| 梅河口市| 建平县| 蒙自县| 郴州市| 读书| 怀宁县| 元朗区| 招远市| 葵青区| 鄂托克前旗| 天门市| 思茅市| 吉安市| 威远县| 裕民县| 连云港市| 清镇市| 永年县| 连城县| 县级市| 青海省| 绍兴县|