ConfigFileApplicationListener 作用

LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code,Keep progress,make a better result.
Survive during the day and develop at night。

目录

概 述

我们最常用的就是application.yml配置文件,里面有各种配置信息,然后我们可以将他们和我们的配置属性类绑定,然后使用,有关配置文件属性绑定到配置属性类的原理,可以看这篇文章。本篇想讲下配置文件是什么时候加载进来的原理。

第一步、

ConfigFileApplicationListener
他属于自动配置里的一个监听器,初始化的时候会进行加载,自动配置原理就不多说了。

何时加载配置文件

其实是在环境准备好的时候,会有一个ApplicationEnvironmentPreparedEvent事件通知,而ConfigFileApplicationListener就是接受这个通知的,这个里面就是有加载配置文件相关的处理:

称之为listerener.envirmonent (enronment);

ConfigFileApplicationListener的onApplicationEnvironmentPreparedEvent

遍历

其实内部就这么一个方法,他获取了所有的环境相关的处理器EnvironmentPostProcessor,然后将自己添加进去,最后排序再逐个遍历执行postProcessEnvironment方法。

private void onApplicationEnvironmentPreparedEvent(ApplicationEnvironmentPreparedEvent event) {
		List<EnvironmentPostProcessor> postProcessors = loadPostProcessors();
		postProcessors.add(this);
		AnnotationAwareOrderComparator.sort(postProcessors);
		for (EnvironmentPostProcessor postProcessor : postProcessors) {
			postProcessor.postProcessEnvironment(event.getEnvironment(), event.getSpringApplication());
		}
	}

loadPostProcessors

就是用SpringFactoriesLoader去加载EnvironmentPostProcessor类型的处理器,做个不需要多说了吧,做个时候已经有缓存了,直接获取反射创建实例就可以了。

List<EnvironmentPostProcessor> loadPostProcessors() {
		return SpringFactoriesLoader.loadFactories(EnvironmentPostProcessor.class, getClass().getClassLoader());
	}


ConfigFileApplicationListener的Loader

总结:

相关工具如下:

分析:

小结:

yml配置文件、加载顺序、配置原理~

参考资料和推荐阅读

1.链接: (https://blog.csdn.net/qq_41813208/article/details/109139783).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执于代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值