10-Application Events and Listeners

197 阅读1分钟

docs.spring.io/spring-boot…

Spring Boot ApplicationListener事件监听机制实现解析

下文有更容易理解的解释

blog.csdn.net/aa348699531…

  • Spring Boot内置了以下事件
  • ApplicationStartingEvent--->run方法首次启动时立即调用
  • ApplicationEnvironmentPreparedEvent--->环境准备之后 创建Appplicationcontex之前
  • ApplicationContextInitializedEvent--->创建applicationContext之后 未加载任何bean之前
  • ApplicationPreparedEvent--->在应用程序上下文已加载但尚未刷新之前调用
  • ApplicationStartedEvent--->上下文已刷新应用程序已启动但尚未调用 未调用applicationRunner和CommandLineRunner
  • ApplicationReadyEvent--->调用所有CommandLineRunner和applicationRunner之后
  • ApplicationFailedEvent--->异常错误时
package com.jeegit.starter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class JeeGitApplication {

    @RequestMapping("/")
    String home() {
        return "Hello World!+JeeGit:Hello World 33.";
    }

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(JeeGitApplication.class);
      //  ConfigurableApplicationContext configurableApplicationContext= SpringApplication.run(JeeGitApplication.class, args);
        app.addListeners(new ApplicationPreparedEventListener());
        app.addListeners(new ApplicationStartedEventListener());
        app.run(args);

        System.out.println("JeeGit:Hello World2 !");
    }

    @Bean
    public DataLoader dataLoader() {
        return new DataLoader();
    }

    @Slf4j
    static class DataLoader implements CommandLineRunner {
        @Override
        public void run(String... strings) throws Exception {
            System.out.println("Loading data..."+strings.length);

            for (String s:strings)
                System.out.println("Loading data..."+s.toString());
            //log.info("Loading data...");
        }
    }


}