springboot源码分析10-ApplicationContextInitializer使用

简介: 摘要:spring中ApplicationContextInitializer接口是在ConfigurableApplicationContext刷新之前初始化ConfigurableApplicationContext的回调接口。

摘要:spring中ApplicationContextInitializer接口是在ConfigurableApplicationContext刷新之前初始化ConfigurableApplicationContext的回调接口。当spring框架内部执行 ConfigurableApplicationContext#refresh() 方法的时候回去回调。

1.1. 实现方式一

首先,我们需要自定义一个类并且实现ApplicationContextInitializer接口。示例代码如下:

public class ShareniuApplicationContextInitializer

implements ApplicationContextInitializer<ConfigurableApplicationContext> {

public void initialize(ConfigurableApplicationContext ac) {

System.out.println("跟着分享牛学习springboot源码分析系列文章1");

}

 

}

非常的简单,我们仅仅是输出了一行日志。在这里我们可以修改ac对象的各种属性值,毕竟他是个引用类型。

新建一个测试类进行测试,示例代码如下:

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication springApplication = new SpringApplication(DemoApplication.class);

springApplication.addInitializers(new ShareniuApplicationContextInitializer());

ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);

}

}

运行上述代码,程序的输出如下:

 

1.2. 实现方式二

首先,我们需要自定义一个类并且实现ApplicationContextInitializer接口。示例代码如下:

public class ShareniuApplicationContextInitializer1

implements ApplicationContextInitializer<ConfigurableApplicationContext> {

public void initialize(ConfigurableApplicationContext ac) {

System.out.println("跟着分享牛学习springboot源码分析系列文章2");

}

 

}

然后在项目的根目录中新建一个application.properties。并进行如下的属性配置:

context.initializer.classes=com.example.demo.ch10.ShareniuApplicationContextInitializer1

application.properties层级结构如下:

 

再次执行方式一的DemoApplication ,程序的输出如下图所示:

 

Ok,这种方式也是可以实现的。

1.3. 实现方式三

首先,我们需要自定义一个类并且实现ApplicationContextInitializer接口。示例代码如下:

public class ShareniuApplicationContextInitializer2

implements ApplicationContextInitializer<ConfigurableApplicationContext> {

public void initialize(ConfigurableApplicationContext ac) {

System.out.println("跟着分享牛学习springboot源码分析系列文章3");

}

}

然后我们在项目的根目录中新建META-INF/spring.factories文件。目录结构如下所示:

 

spring.factories文件的内容如下:

org.springframework.context.ApplicationContextInitializer=\

com.example.demo.ch10.ShareniuApplicationContextInitializer2

再次执行方式一的DemoApplication ,程序的输出如下图所示:



欢迎关注我的微信公众号,第一时间获得博客更新提醒,以及更多成体系的Java相关原创技术干货。 
扫一扫下方二维码或者长按识别二维码,即可关注。
 


相关文章
|
前端开发 Java 应用服务中间件
《SpringBoot启动流程七》:源码分析SpringBoot如何内嵌并启动Tomcat服务器的?
《SpringBoot启动流程七》:源码分析SpringBoot如何内嵌并启动Tomcat服务器的?
321 0
《SpringBoot启动流程七》:源码分析SpringBoot如何内嵌并启动Tomcat服务器的?
|
Java Spring 容器
《SpringBoot启动流程六》:SpringBoot自动装配时做条件装配的原理(万字图文源码分析)(含@ConditionalOnClass原理)
《SpringBoot启动流程六》:SpringBoot自动装配时做条件装配的原理(万字图文源码分析)(含@ConditionalOnClass原理)
350 0
《SpringBoot启动流程六》:SpringBoot自动装配时做条件装配的原理(万字图文源码分析)(含@ConditionalOnClass原理)
|
Java Spring
《SpringBoot启动流程五》:你真的知道SpringBoot自动装配原理吗(两万字图文源码分析)
《SpringBoot启动流程五》:你真的知道SpringBoot自动装配原理吗(两万字图文源码分析)
161 0
《SpringBoot启动流程五》:你真的知道SpringBoot自动装配原理吗(两万字图文源码分析)
|
Java 应用服务中间件 Spring
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
196 0
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
|
监控 安全 Java
《SpringBoot启动流程三》:两万+字图文带你debug源码分析SpringApplication准备阶段(含配置文件加载时机、日志系统初始化时机)
《SpringBoot启动流程三》:两万+字图文带你debug源码分析SpringApplication准备阶段(含配置文件加载时机、日志系统初始化时机)
262 0
《SpringBoot启动流程三》:两万+字图文带你debug源码分析SpringApplication准备阶段(含配置文件加载时机、日志系统初始化时机)
|
存储 缓存 前端开发
《SpringBoot启动流程二》:七千字源码分析SpringApplication构造阶段
《SpringBoot启动流程二》:七千字源码分析SpringApplication构造阶段
122 0
《SpringBoot启动流程二》:七千字源码分析SpringApplication构造阶段
|
Java 程序员 开发者
自定义spring boot starter三部曲之三:源码分析spring.factories加载过程
分析Spring和Spring boot源码,了解spring.factories自动加载原理
280 0
自定义spring boot starter三部曲之三:源码分析spring.factories加载过程
|
安全 Java
Springboot 别名管理源码分析
# 别名的注册 SimpleAliasRegistry维护了一个映射别名到真实名称的aliasMap这里使用的是线程安全的ConcurrentHashMap,即在多线程的情况下也可以对同一个bean安全地进行别名的增删改查。同时也说明了**一个别名只能对应一个真名,而一个真名没有对应多个别名**。由于SimpleAliasRegistry是对项目全局别名的管理,**任意别名都必须是全局唯一的**。
172 0
|
NoSQL Java Redis
SpringBoot自动化配置源码分析
SpringBoot 的自动化配置让我们的开发彻底远离了 Spring 繁琐的各种配置,让我们专注于开发,但是SpringBoot 的自动化配置是怎么实现的呢?下面为你揭开 SpringBoot 自动化配置的神秘面纱。
100 0
SpringBoot自动化配置源码分析
|
设计模式 Java 网络架构
SpringBoot请求映射源码分析(没看过源码的小白也能懂,比针尖还细)
SpringBoot请求映射源码分析(没看过源码的小白也能懂,比针尖还细)
238 0
SpringBoot请求映射源码分析(没看过源码的小白也能懂,比针尖还细)