欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

SpringApplicationRunListenerde作用

命名我們就可以知道它是一個(gè)監(jiān)聽(tīng)者,分析springboot啟動(dòng)流程我們會(huì)發(fā)現(xiàn),它其實(shí)是用來(lái)在整個(gè)啟動(dòng)流程中接收不同執(zhí)行點(diǎn)事件通知的監(jiān)聽(tīng)者

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

源碼分析

在這里插入圖片描述

在這里插入圖片描述

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

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

在這里插入圖片描述

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

方法詳解

public interface SpringApplicationRunListener {

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

}

具體使用

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

在resources下新建META-INF\spring.factories文件,文件里面將新建的實(shí)現(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ù)啟動(dòng)RunnerTest  SpringApplicationRunListener的starting方法...");
  }

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

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

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

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

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

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

注意事項(xiàng)

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

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

相關(guān)文章

  • Java中StringBuilder字符串類型的操作方法及API整理

    Java中StringBuilder字符串類型的操作方法及API整理

    Java中的StringBuffer類繼承于AbstractStringBuilder,用來(lái)創(chuàng)建非線程安全的字符串類型對(duì)象,下面即是對(duì)Java中StringBuilder字符串類型的操作方法及API整理
    2016-05-05
  • HttpClient 在Java項(xiàng)目中的使用詳解

    HttpClient 在Java項(xiàng)目中的使用詳解

    HttpClient作為訪問(wèn)Http服務(wù)的客戶端訪問(wèn)程序已經(jīng)被廣泛使用,提高了開發(fā)效率,也提高了代碼的健壯性。因此熟練掌握HttpClient是必需的,關(guān)于httpclient感興趣的朋友可以參考本篇文章
    2015-10-10
  • Java中的@PostConstruct注解的使用

    Java中的@PostConstruct注解的使用

    本文主要介紹了Java中的@PostConstruct注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 使用SpringBoot根據(jù)配置注入接口的不同實(shí)現(xiàn)類(代碼演示)

    使用SpringBoot根據(jù)配置注入接口的不同實(shí)現(xiàn)類(代碼演示)

    使用springboot開發(fā)時(shí)經(jīng)常用到@Autowired和@Resource進(jìn)行依賴注入,但是當(dāng)我們一個(gè)接口對(duì)應(yīng)多個(gè)不同的實(shí)現(xiàn)類的時(shí)候如果不進(jìn)行一下配置項(xiàng)目啟動(dòng)時(shí)就會(huì)報(bào)錯(cuò),那么怎么根據(jù)不同的需求注入不同的類型呢,感興趣的朋友一起看看吧
    2022-06-06
  • java定義受限制的類型參數(shù)操作

    java定義受限制的類型參數(shù)操作

    這篇文章主要介紹了java定義受限制的類型參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java UUID 五個(gè)版本的區(qū)別及使用場(chǎng)景小結(jié)

    Java UUID 五個(gè)版本的區(qū)別及使用場(chǎng)景小結(jié)

    在Java中,UUID是一個(gè)128位的唯一標(biāo)識(shí)符,廣泛應(yīng)用于生成唯一標(biāo)識(shí)符、分布式系統(tǒng)唯一鍵等場(chǎng)景,Java提供的java.util.UUID類支持五種UUID版本,每種具有不同的生成方式和使用場(chǎng)景,本文就來(lái)介紹一下如何使用,感興趣的可以了解一下
    2024-11-11
  • java實(shí)現(xiàn)二叉樹的創(chuàng)建及5種遍歷方法(總結(jié))

    java實(shí)現(xiàn)二叉樹的創(chuàng)建及5種遍歷方法(總結(jié))

    下面小編就為大家?guī)?lái)一篇java實(shí)現(xiàn)二叉樹的創(chuàng)建及5種遍歷方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • java實(shí)現(xiàn)收藏名言語(yǔ)句臺(tái)詞的app

    java實(shí)現(xiàn)收藏名言語(yǔ)句臺(tái)詞的app

    本文給大家分享的是使用java制作的記錄名人名言臺(tái)詞等等讓你難忘的語(yǔ)句的APP的代碼,非常的實(shí)用,有需要的小伙伴可以參考下。
    2015-04-04
  • SpringBoot中@Conditional注解的使用

    SpringBoot中@Conditional注解的使用

    這篇文章主要介紹了SpringBoot中@Conditional注解的使用,@Conditional注解是一個(gè)條件裝配注解,主要用于限制@Bean注解在什么時(shí)候才生效,以指定的條件形式控制bean的創(chuàng)建,需要的朋友可以參考下
    2024-01-01
  • springboot2.x集成swagger的方法示例

    springboot2.x集成swagger的方法示例

    這篇文章主要介紹了springboot2.x集成swagger的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論