SpringBoot初始化都是围绕spring.factories 这个文件开始。
- SpringBoot加载配置文件的入口是由ApplicationEnvironmentPreparedEvent事件进入的,SpringBoot会在SpringApplication的构造函数中通过spring.factories文件获取ApplicationListener的实例类。
- spring.factories中有一个ConfigFileApplicationListener类,它会监听ApplicationEnvironmentPreparedEvent然后加载配置文件。
- SpringApplicationRunListener被实现,并对事件进行转发
- spring.factories文件中的EventPublishingRunListener类,它的作用就是SpringBoot的事件转换成ApplicationEvent发送出去
总之:
- SpringBoot会将事件转换成ApplicationEvent再分发
- SpringBoot是通过监听ApplicationEnvironmentPreparedEvent事件来加载配置文件的
- ConfigFileApplicationListener是处理配置文件的主要类