容器启动事件监听机制

传送门: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###");
}
}

控制台启动流程:

posted @   Lz_蚂蚱  阅读(37)  评论(0编辑  收藏  举报
历史上的今天:
2022-03-12 Linux安装JDK、MySQL、Redis、Tomcat
2022-03-12 网卡配置
2022-03-12 主机名配置
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起