User Tools

Site Tools


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

Except where otherwise noted, content on this wiki is licensed under the following license: 沪ICP备12046235号-2
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki