今天在看spring cloud官方文档的时候看到ApplicationContextInitializer,官网上对这个类的解释如下
Callback interface for initializing a Spring ConfigurableApplicationContext
prior to being ConfigurableApplicationContext#refresh() refreshed.
翻译过后
spring上下文初始化的回调函数在上下文(ConfigurableApplicationContext)刷新(refresh)之前调用。
下面我们来看一下实现方式,自己自定义一个类来实现ApplicationContextInitializer
public class MyApplicationContextInitializer implements ApplicationContextInitializer{
@Override
public void initialize(ConfigurableApplicationContext var1){
System.out.println("bean init==============================="+var1.getApplicationName());
}
}
然后在启动类main方法中写如下方法
public static void main(String[] args) {
// SpringApplication.run(Application.class, args);
SpringApplication application = new SpringApplication(Application.class);
方法一:添加自定义的 ApplicationContextInitializer 实现类的实例(注册ApplicationContextInitializer)
application.addInitializers(new MyApplicationContextInitializer());
ConfigurableApplicationContext context = application.run(args);
context.close();
}
然后我们来看看启动日志
我们看到这个接口是在上下文启动之前调用的。
也可以不用在启动类中加,直接在配置文件里面加载我们的类
context:
initializer:
classes: com.zfh.config.MyApplicationContextInitializer