spring:application-listener
package com.xiaosq.projectx; import org.springframework.beans.BeansException; import org.springframework.boot.SpringApplication; import org.springframework.boot.context.event.*; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.SmartApplicationListener; import org.springframework.core.Ordered; import org.springframework.core.env.ConfigurableEnvironment; /** * @author Morgan.L * @version 1.0 * @date 2019/7/15 18:28 */ public class MyTestApplicationListener implements EnvironmentPostProcessor, SmartApplicationListener, Ordered, ApplicationContextAware { private int i = 0; private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Override public void onApplicationEvent(ApplicationEvent event) { i++; if(event instanceof ApplicationStartingEvent) { System.out.println("MyTestApplicationListener=>ApplicationStartingEvent" + i); } else if(event instanceof ApplicationPreparedEvent) { System.out.println("MyTestApplicationListener=>ApplicationPreparedEvent" + i); } else if(event instanceof ApplicationReadyEvent) { System.out.println("MyTestApplicationListener=>ApplicationReadyEvent" + i); } else if(event instanceof ApplicationStartedEvent) { //因为ApplicationStartedEvent extends ApplicationStartingEvent 所以这一行永远不会被执行 System.out.println("MyTestApplicationListener=>ApplicationStartedEvent" + i); } else if(event instanceof ApplicationEnvironmentPreparedEvent) { System.out.println("MyTestApplicationListener=>ApplicationEnvironmentPreparedEvent" + i); } else if(event instanceof ApplicationFailedEvent) { System.out.println("MyTestApplicationListener=>ApplicationFailedEvent" + i); } else if(event instanceof SpringApplicationEvent) { System.out.println("MyTestApplicationListener=>SpringApplicationEvent" + i); } /*else if(event instanceof EmbeddedServletContainerInitializedEvent) { System.out.println("MyTestApplicationListener=>EmbeddedServletContainerInitializedEvent" + i); }*/ else if(event instanceof ContextRefreshedEvent) { System.out.println("MyTestApplicationListener=>ContextRefreshedEvent" + i); } else { System.out.println("myTestApplication execute... onApplicationEvent" + event.getClass().toString() + i); } } @Override public boolean supportsSourceType(Class<?> sourceType) { return true; } @Override public int getOrder() { return 0; } @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { System.out.println("myTestApplication execute...postProcessEnvironment"); } @Override public boolean supportsEventType(Class<? extends ApplicationEvent> eventType) { return true; } }
resources/META-INF/spring.factories
# Application Listeners org.springframework.context.ApplicationListener=\ com.xiaosq.projectx.MyTestApplicationListener
spring/application-listener.txt · Last modified: 2021/08/22 12:58 by morgan0329