spring-boot ApplicationContextInitializer实现与使用

ApplicationContextInitializer是在ConfigurableApplicationContext刷新之前初始化Spring ConfigurableApplicationContext的回调接口。当执行:ConfigurableApplicationContext.refresh()或SpringApplication.run()时生效。

实现方式

1)编写MyApplicationContextInitializer,实现ApplicationContextInitializer接口。

public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    @Override
    public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
        System.out.println("=======“);
    }
}

启动BlogApplication

@SpringBootApplication
public class BlogApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(BlogApplication.class);
        //关键一步:将一个或多个initializer加入至spring容器中
        springApplication.addInitializers(new MyApplicationContextInitializer());
        springApplication.run(args).close();
    }
}
console result

2)在application.properties中以context.initializer.classes为key配置一个或多个自定义Initializer

application.properties

BlogApplication中注释掉springApplication.addInitializers();

@SpringBootApplication
public class BlogApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(BlogApplication.class);
        //springApplication.addInitializers(new MyApplicationContextInitializer());
        springApplication.run(args).close();
    }
}
console result

3)在META-INF/spring.factories中以org.springframework.context.ApplicationContextInitializer为key配置一个或多个initialier

spring.factories

执行结果和上图一样。

至此,springboot中的ApplicationContextInitializer实现与使用就结束啦,喜欢的读者可以持续关注我的springboot系列博客~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容