ApplicationContextInitializer接口介绍
ApplicationContextInitializer
接口是Spring容器执行refreshed之前的一次回调。允许我们在Spring容器做进一步的控制和设置。
使用步骤如下:
- 写一个类,实现ApplicationContextInitializer接口,重写initialize方法:
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("bean count : " + applicationContext.getBeanDefinitionCount());
}
}
- 注册ApplicationContextInitializer,注册方法有以下两种:
1)通过调用方法SpringApplication.addInitializaters():
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(App.class);
application.addInitializers(new MyApplicationContextInitializer());
ConfigurableApplicationContext context = application.run(args);
context.close();
}
}
2)通过配置文件application.properties:context.initializer.classes
配置项,可配置多个,若配置多个,用逗号隔开:
context.initializer.classes=com.chavaer.springboot.init.MyApplicationContextInitializer,com.chavaer.springboot.init.MyApplicationContextInitializer2
再添加一个自定义类MyApplicationContextInitializer2,实现ApplicationContextInitializer接口:
public class MyApplicationContextInitializer2 implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("environment : " + applicationContext.getEnvironment());
}
}
启动器正常启动:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(App.class);
ConfigurableApplicationContext context = application.run(args);
context.close();
}
}
输出结果如下: