自定義ApplicationContextInitializer接口實現

簡介

ApplicationContextInitializer是Spring框架提供的接口, 該接口的主要功能就是在接口ConfigurableApplicationContext刷新以前,容許用戶對ConfigurableApplicationContext實例作必定的操做。該接口只有一個initialize方法。spring

ApplicationContextInitializer接口源代碼

該接口只定義了一個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

原文連接:https://www.choupangxia.com/2...對象

相關文章
相關標籤/搜索