SpringBoot事件监听ApplicationListener

tech2026-02-26  2

SpringBoot Application事件监听ApplicationListener

自定义监听器需要实现ApplicationListener接口

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

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

另外:

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

上代码:

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"); } } ApplicationEnvironmentPreparedEvent

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); } }
最新回复(0)