SpringBoot Application共支持6种事件监听,按顺序分别是:
- ApplicationStartingEvent:在Spring最开始启动的时候触发
- ApplicationEnvironmentPreparedEvent:在Spring已经准备好上下文但是上下文尚未创建的时候触发
- ApplicationPreparedEvent:在Bean定义加载之后、刷新上下文之前触发
- ApplicationStartedEvent:在刷新上下文之后、调用application命令之前触发
- ApplicationReadyEvent:在调用applicaiton命令之后触发
- 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"); } }
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"); } }