ApplicationContextInitializer是Spring框架提供的接口, 该接口的主要功能就是在接口ConfigurableApplicationContext刷新以前,容许用户对ConfigurableApplicationContext实例作必定的操做。该接口只有一个initialize方法。spring
该接口只定义了一个initialize方法。app
public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> { void initialize(C applicationContext); }
实现该接口,并在initialize方法中打印容器中初始化了多少个Bean对象。框架
@Order(123) // @Order的value值越小越早执行 public class LearnApplicationContextInitializer implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext applicationContext) { // 打印容器里面初始化了多少个Bean System.out.println("容器中初始化Bean数量:" + applicationContext.getBeanDefinitionCount()); } }
仿照Spring Boot初始化配置使用该接口实现类的方法,在项目的classpath下建立META-INF/spring.factories文件。并仿照Spring Boot的配置格式进行配置:ide
# Application Context Initializers org.springframework.context.ApplicationContextInitializer=\ com.secbro2.learn.initializer.LearnApplicationContextInitializer
经过application.properties或application.yml文件进行配置。格式以下:spa
context.initializer.classes=com.secbro2.learn.initializer.LearnApplicationContextInitializer
经过SpringApplication提供的addInitializers方法进行追加配置的。日志
public static void main(String[] args) { SpringApplication app = new SpringApplication(SpringLearnApplication.class, Person.class); app.addInitializers(new LearnApplicationContextInitializer()); app.run(args); }
启动Spring Boot程序,打印日志:code
容器中初始化Bean数量:6