ApplicationContextInitializer是在ConfigurableApplicationContext刷新之前初始化Spring ConfigurableApplicationContext的回调接口。当执行:
ConfigurableApplicationContext.refresh()或SpringApplication.run()时生效。
1)编写MyApplicationContextInitializer,实现ApplicationContextInitializer接口。
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { @Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
System.out.println("=======“);
}
}
启动BlogApplication
@SpringBootApplicationpublic 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();
@SpringBootApplicationpublic 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
执行结果和上图一样。
至此,springboot中的ApplicationContextInitializer实现与使用就结束啦,喜欢的读者可以持续关注我的springboot系列博客~
作者:八目朱勇铭
链接:https://www.jianshu.com/p/e4a0b900872b
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3370/viewspace-2820414/ ,如需转载,请注明出处,否则将追究法律责任。