容器启动事件监听机制
目录
传送门:12.SpringBoot启动配置原理
容器启动事件监听机制
配置在META-INF/spring.factories
文件中
ApplicationContextInitializer
SpringApplicationRunListener
放在IOC容器中
ApplicationRunner
CommandLineRunner
ApplicationContextInitializer
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
/**
* 自定义初始化组件
*
*/
public class CustomApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("CustomApplicationContextInitializer####" + applicationContext.getApplicationName());
}
}
SpringApplicationRunListener
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
/**
* 自定义容器监听器组件
*
*/
public class CustomSpringApplicationRunListener implements SpringApplicationRunListener {
//构造器必须要有
public CustomSpringApplicationRunListener(SpringApplication application, String[] args) {
}
/**
* 开始创建容器
*/
@Override
public void starting() {
System.out.println("CustomSpringApplicationRunListener###starting");
}
/**
* 准备环境
*
* @param environment
*/
@Override
public void environmentPrepared(ConfigurableEnvironment environment) {
System.out.println("CustomSpringApplicationRunListener###environmentPrepared:" + environment.getSystemProperties().get("os.name"));
}
/**
* 容器准备完成
*
* @param context
*/
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
System.out.println("CustomSpringApplicationRunListener###contextPrepared:" + context.getApplicationName());
}
/**
* 容器环境加载完成
*
* @param context
*/
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
System.out.println("CustomSpringApplicationRunListener###contextLoaded");
}
/**
* 容器创建结束
*
* @param context
* @param exception
*/
@Override
public void finished(ConfigurableApplicationContext context, Throwable exception) {
System.out.println("CustomSpringApplicationRunListener###finished");
}
}
ApplicationRunner
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
/**
*
*
*/
@Component
public class CustomApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("CustomApplicationRunner###");
}
}
CommandLineRunner
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
/**
*
*
*/
@Component
public class CustomCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CustomCommandLineRunner###");
}
}
控制台启动流程:
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/17208403.html