zoukankan      html  css  js  c++  java
  • SpringBoot Application事件监听

    SpringBoot Application共支持6种事件监听,按顺序分别是:

    1. ApplicationStartingEvent:在Spring最开始启动的时候触发
    2. ApplicationEnvironmentPreparedEvent:在Spring已经准备好上下文但是上下文尚未创建的时候触发
    3. ApplicationPreparedEvent:在Bean定义加载之后、刷新上下文之前触发
    4. ApplicationStartedEvent:在刷新上下文之后、调用application命令之前触发
    5. ApplicationReadyEvent:在调用applicaiton命令之后触发
    6. ApplicationFailedEvent:在启动Spring发生异常时触发

    另外:

    • ApplicationRunner和CommandLineRunner的执行在第五步和第六步之间
    • Bean的创建在第三步和第四步之间
    • 在启动类中,执行SpringApplication.run()方法后的代码,会在第六步后执行

    多说无益,直接上代码:

    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");
        }
    }
    ApplicationStartingEvent
    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");
        }
    }
    ApplicationEnvironmentPreparedEvent
    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");
        }
    }
    ApplicationPreparedEvent
    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");
        }
    }
    ApplicationStartedEvent
    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");
        }
    }
    ApplicationReadyEvent
    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");
        }
    }
    ApplicationFailedEvent
    @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);
        }
    }
    主启动类

    运行结果:

    Connected to the target VM, address: '127.0.0.1:62927', transport: 'socket'
    ============>>>>> applicationStartingEvent is trigged
    1541055154248
    ============>>>>> End
    ============>>>>> ApplicationEnvironmentPreparedEvent is trigged
    1541055154320
    ============>>>>> 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:CodeSelfCodeSpringCloudTestSpringBootTest	argetclasses started by Administrator in D:CodeSelfCodeSpringCloud)
    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
    1541055155205
    ============>>>>> 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 FilesJavajdk1.8.0_191in;C:WindowsSunJavain;C:Windowssystem32;C:Windows;C:Program Files (x86)Common FilesOracleJavajavapath;C:Program Files (x86)InteliCLS Client;C:Program FilesInteliCLS Client;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsDAL;C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsIPT;C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;C:Program FilesIntelWiFiin;C:Program FilesCommon FilesIntelWirelessCommon;C:Program FilesThinkPadBluetooth Software;C:Program FilesThinkPadBluetooth Softwaresyswow64;C:Program Files (x86)IntelOpenCL SDK2.0inx86;C:Program Files (x86)IntelOpenCL SDK2.0inx64;D:Program FilesJavajdk1.8.0_191in;D:Program FilesGitcmd;D:Program Filesapache-maven-3.5.4in;C:Program FilesIntelWiFiin;C:Program FilesCommon FilesIntelWirelessCommon;.]
    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
    1541055158213
    ============>>>>> End
    ============>>>>> applicationReadyEvent is trigged
    1541055158214
    ============>>>>> End
  • 相关阅读:
    Linux 系统挂载数据盘
    Apache Rewrite规则笔记
    linux fdisk分区笔记
    阿里云linux配置
    linux 下安装mysql相关笔记
    ShopNC目录结构分析
    今天开始出发做ShopNC
    svn相关笔记
    linux学习笔记-不定时更新
    Oracle EBS Java Applet报错:找不到类
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/9889370.html
Copyright © 2011-2022 走看看