共计 1412 个字符,预计需要花费 4 分钟才能阅读完成。
简介
ApplicationContextInitializer 是 Spring 框架提供的接口, 该接口的主要功能就是在接口 ConfigurableApplicationContext 刷新之前,允许用户对 ConfigurableApplicationContext 实例做一定的操作。该接口只有一个 initialize 方法。
ApplicationContextInitializer 接口源代码
该接口只定义了一个 initialize 方法。
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 的配置格式进行配置:
# Application Context Initializers
org.springframework.context.ApplicationContextInitializer=\
com.secbro2.learn.initializer.LearnApplicationContextInitializer
第二种方法
通过 application.properties 或 application.yml 文件进行配置。格式如下:
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 程序,打印日志:
容器中初始化 Bean 数量:6
原文链接:https://www.choupangxia.com/2…
正文完
发表至: java
2019-07-17