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