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

SpringBoot Application事件監(jiān)聽的實(shí)現(xiàn)方案

 更新時間:2019年05月30日 10:19:32   作者:西昆侖  
這篇文章主要介紹了SpringBoot Application事件監(jiān)聽的實(shí)現(xiàn)方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

先說結(jié)論

SpringBoot Application共支持6種事件監(jiān)聽,按順序分別是:

  1. ApplicationStartingEvent:在Spring最開始啟動的時候觸發(fā)
  2. ApplicationEnvironmentPreparedEvent:在Spring已經(jīng)準(zhǔn)備好上下文但是上下文尚未創(chuàng)建的時候觸發(fā)
  3. ApplicationPreparedEvent:在Bean定義加載之后、刷新上下文之前觸發(fā)
  4. ApplicationStartedEvent:在刷新上下文之后、調(diào)用application命令之前觸發(fā)
  5. ApplicationReadyEvent:在調(diào)用applicaiton命令之后觸發(fā)
  6. ApplicationFailedEvent:在啟動Spring發(fā)生異常時觸發(fā)

另外:

  • ApplicationRunner和CommandLineRunner的執(zhí)行在第五步和第六步之間
  • Bean的創(chuàng)建在第三步和第四步之間
  • 在啟動類中,執(zhí)行SpringApplication.run()方法后的代碼,會在第六步后執(zhí)行

再上代碼:

ApplicationStartingEvent

public class ApplicationStartingEventListener implements ApplicationListener<ApplicationStartingEvent> {

  @Override
  public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
    System.out.println("============>>>>> applicationStartingEvent is trigged");
    System.out.println(applicationStartingEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

ApplicationEnvironmentPreparedEvent

public class ApplicationEnvironmentPreparedEventListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {

  @Override
  public void onApplicationEvent(ApplicationEnvironmentPreparedEvent applicationEnvironmentPreparedEvent) {
    System.out.println("============>>>>> ApplicationEnvironmentPreparedEvent is trigged");
    System.out.println(applicationEnvironmentPreparedEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

ApplicationPreparedEvent

public class ApplicationPreparedEventListener implements ApplicationListener<ApplicationPreparedEvent> {

  @Override
  public void onApplicationEvent(ApplicationPreparedEvent applicationPreparedEvent) {
    System.out.println("============>>>>> applicationPreparedEvent is trigged");
    System.out.println(applicationPreparedEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

ApplicationStartedEvent

public class ApplicationStartedEventListener implements ApplicationListener<ApplicationStartedEvent> {

  @Override
  public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
    System.out.println("============>>>>> applicationStartedEvent is trigged");
    System.out.println(applicationStartedEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

ApplicationReadyEvent

public class ApplicationReadyEventListener implements ApplicationListener<ApplicationReadyEvent> {

  @Override
  public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
    System.out.println("============>>>>> applicationReadyEvent is trigged");
    System.out.println(applicationReadyEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

ApplicationFailedEvent

public class ApplicationFailedEventListener implements ApplicationListener<ApplicationFailedEvent> {

  @Override
  public void onApplicationEvent(ApplicationFailedEvent applicationFailedEvent) {
    System.out.println("============>>>>> ApplicationFailedEvent is trigged");
    System.out.println(applicationFailedEvent.getTimestamp());
    System.out.println("============>>>>> End");
  }
}

主啟動類

@SpringBootApplication
public class SpringBootTestApplication {

  public static void main(String[] args) {
    SpringApplication springApplication = new SpringApplication(SpringBootTestApplication.class);
    springApplication.addListeners(new ApplicationEnvironmentPreparedEventListener());
    springApplication.addListeners(new ApplicationFailedEventListener());
    springApplication.addListeners(new ApplicationPreparedEventListener());
    springApplication.addListeners(new ApplicationReadyEventListener());
    springApplication.addListeners(new ApplicationStartedEventListener());
    springApplication.addListeners(new ApplicationStartingEventListener());
    springApplication.run(args);
  }
}

運(yùn)行結(jié)果

Connected to the target VM, address: '127.0.0.1:62927', transport: 'socket'
============>>>>> applicationStartingEvent is trigged
============>>>>> End
============>>>>> ApplicationEnvironmentPreparedEvent is trigged
============>>>>> End

 .  ____     _      __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::    (v2.0.3.RELEASE)

2018-11-01 14:52:35.117 INFO 2044 --- [      main] c.l.s.b.test.SpringBootTestApplication  : Starting SpringBootTestApplication on EDIANZU-ETGVGB5 with PID 2044 (D:\Code\SelfCode\SpringCloud\Test\SpringBootTest\target\classes started by Administrator in D:\Code\SelfCode\SpringCloud)
2018-11-01 14:52:35.122 INFO 2044 --- [      main] c.l.s.b.test.SpringBootTestApplication  : No active profile set, falling back to default profiles: default
============>>>>> applicationPreparedEvent is trigged
============>>>>> End
2018-11-01 14:52:35.212 INFO 2044 --- [      main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3406472c: startup date [Thu Nov 01 14:52:35 CST 2018]; root of context hierarchy
2018-11-01 14:52:36.891 INFO 2044 --- [      main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-11-01 14:52:36.920 INFO 2044 --- [      main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]
2018-11-01 14:52:36.920 INFO 2044 --- [      main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.31
2018-11-01 14:52:36.925 INFO 2044 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener  : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [D:\Program Files\Java\jdk1.8.0_191\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\ThinkPad\Bluetooth Software\;C:\Program Files\ThinkPad\Bluetooth Software\syswow64;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;D:\Program Files\Java\jdk1.8.0_191\bin;D:\Program Files\Git\cmd;D:\Program Files\apache-maven-3.5.4\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;.]
2018-11-01 14:52:37.048 INFO 2044 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]    : Initializing Spring embedded WebApplicationContext
2018-11-01 14:52:37.048 INFO 2044 --- [ost-startStop-1] o.s.web.context.ContextLoader      : Root WebApplicationContext: initialization completed in 1841 ms
2018-11-01 14:52:37.377 INFO 2044 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-11-01 14:52:37.389 INFO 2044 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-11-01 14:52:37.390 INFO 2044 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-11-01 14:52:37.390 INFO 2044 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-11-01 14:52:37.390 INFO 2044 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2018-11-01 14:52:37.598 INFO 2044 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-11-01 14:52:37.857 INFO 2044 --- [      main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3406472c: startup date [Thu Nov 01 14:52:35 CST 2018]; root of context hierarchy
2018-11-01 14:52:37.922 INFO 2044 --- [      main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-11-01 14:52:37.923 INFO 2044 --- [      main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-11-01 14:52:37.973 INFO 2044 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-11-01 14:52:37.973 INFO 2044 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-11-01 14:52:38.160 INFO 2044 --- [      main] o.s.j.e.a.AnnotationMBeanExporter    : Registering beans for JMX exposure on startup
2018-11-01 14:52:38.206 INFO 2044 --- [      main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-11-01 14:52:38.212 INFO 2044 --- [      main] c.l.s.b.test.SpringBootTestApplication  : Started SpringBootTestApplication in 3.976 seconds (JVM running for 5.088)
============>>>>> applicationStartedEvent is trigged
============>>>>> End
============>>>>> applicationReadyEvent is trigged
============>>>>> End

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java抽象類和普通類區(qū)別、 數(shù)組跟List的區(qū)別解析

    Java抽象類和普通類區(qū)別、 數(shù)組跟List的區(qū)別解析

    這篇文章主要介紹了Java抽象類和普通類區(qū)別、 數(shù)組跟List的區(qū)別,在這里需要注意List是一個接口,不能直接實(shí)例化,需要使用具體的實(shí)現(xiàn)類來創(chuàng)建對象,本文結(jié)合示例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-09-09
  • Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語句示例

    Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語句示例

    本篇文章主要介紹了Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語句示例,可以對多個表執(zhí)行多個sql語句,有興趣的可以了解一下。
    2017-01-01
  • Spring Security基本配置方法解析

    Spring Security基本配置方法解析

    這篇文章主要介紹了Spring Security基本配置方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺談spring使用策略模式實(shí)現(xiàn)多種場景登錄方式

    淺談spring使用策略模式實(shí)現(xiàn)多種場景登錄方式

    本文主要介紹了spring使用策略模式實(shí)現(xiàn)多種場景登錄方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • JAVA抽象類及接口使用方法解析

    JAVA抽象類及接口使用方法解析

    這篇文章主要介紹了JAVA抽象類及接口使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java Bean與Map之間相互轉(zhuǎn)化的實(shí)現(xiàn)方法

    Java Bean與Map之間相互轉(zhuǎn)化的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java Bean與Map之間相互轉(zhuǎn)化的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • MyBatis-Plus 自定義sql語句的實(shí)現(xiàn)

    MyBatis-Plus 自定義sql語句的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis-Plus 自定義sql語句的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法

    Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法

    這篇文章主要介紹了Eclipse 出現(xiàn)Failed to load JavaHL Library解決方法的相關(guān)資料,今天使用Eclipse 時出現(xiàn)以上錯誤,本文說明如何更更正,需要的朋友可以參考下
    2016-11-11
  • Java把數(shù)字格式化為貨幣字符串實(shí)例代碼

    Java把數(shù)字格式化為貨幣字符串實(shí)例代碼

    這篇文章主要介紹了Java把數(shù)字格式化為貨幣字符串實(shí)例代碼,需要的朋友可以參考下
    2014-02-02
  • 策略模式:告別if else

    策略模式:告別if else

    你是不是還在寫著大量的if else語句,if else 不僅難以維護(hù)不易擴(kuò)展,而且使代碼臃腫不堪,想不想讓你的業(yè)務(wù)代碼更加的健壯,更易擴(kuò)展,那你一定要學(xué)一學(xué)今天的主角策略模式
    2021-06-06

最新評論