容器启动事件监听机制
配置在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"); |
| } |
| |
| |
| |
| |
| |
| |
| @Override |
| public void environmentPrepared(ConfigurableEnvironment environment) { |
| System.out.println("CustomSpringApplicationRunListener###environmentPrepared:" + environment.getSystemProperties().get("os.name")); |
| } |
| |
| |
| |
| |
| |
| |
| @Override |
| public void contextPrepared(ConfigurableApplicationContext context) { |
| System.out.println("CustomSpringApplicationRunListener###contextPrepared:" + context.getApplicationName()); |
| } |
| |
| |
| |
| |
| |
| |
| @Override |
| public void contextLoaded(ConfigurableApplicationContext context) { |
| System.out.println("CustomSpringApplicationRunListener###contextLoaded"); |
| } |
| |
| |
| |
| |
| |
| |
| |
| @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###"); |
| } |
| } |
控制台启动流程:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-03-12 Linux安装JDK、MySQL、Redis、Tomcat
2022-03-12 网卡配置
2022-03-12 主机名配置