ApplicationContextInitializer是在ConfigurableApplicationContext刷新之前初始化Spring ConfigurableApplicationContext的回調接口。當執(zhí)行:
ConfigurableApplicationContext.refresh()或SpringApplication.run()時生效。
實現(xiàn)方式
1)編寫MyApplicationContextInitializer,實現(xiàn)ApplicationContextInitializer接口。
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
System.out.println("=======“);
}
}
啟動BlogApplication
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(BlogApplication.class);
//關鍵一步:將一個或多個initializer加入至spring容器中
springApplication.addInitializers(new MyApplicationContextInitializer());
springApplication.run(args).close();
}
}

console result
2)在application.properties中以context.initializer.classes為key配置一個或多個自定義Initializer

application.properties
在
BlogApplication中注釋掉springApplication.addInitializers();
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(BlogApplication.class);
//springApplication.addInitializers(new MyApplicationContextInitializer());
springApplication.run(args).close();
}
}

console result
3)在META-INF/spring.factories中以org.springframework.context.ApplicationContextInitializer為key配置一個或多個initialier

spring.factories
執(zhí)行結果和上圖一樣。
至此,springboot中的ApplicationContextInitializer實現(xiàn)與使用就結束啦,喜歡的讀者可以持續(xù)關注我的springboot系列博客~