在Spring Boot的源码中,配置文件的加载是在应用程序启动的早期阶段进行的。具体来说,配置文件加载的主要步骤发生在SpringApplication
类的run()
方法中的prepareEnvironment
方法中,真正读取我们的配置文件还是PropertySourceLoader。
本篇博客适合准备看源码,和想了解配置文件加载大体逻辑的同学。
本篇文章主要粘贴了加载配置文件的主要处理逻辑的源码,方便各位同学直接定位关键代码,辅助大家了解配置文件被处理的过程。
以下是Spring Boot源码中加载配置文件的主要步骤:
-
prepareEnvironment()
方法: 应用程序的入口点是SpringApplication
类的run()
,加载配置的方法入口run()
中调用的prepareEnvironment()
方法。初始化environment
对象用于后续存储环境信息,以及后续处理逻辑的入口都在这个方法。 -
ApplicationEnvironmentPreparedEvent
事件: 发布环境准备事件,通过spring事件发布机制去处理环境对象。关键代码listeners.environmentPrepared(bootstrapContext, environment);
private ConfigurableEnvironment prepareEnvironment(SpringApplicationRunListeners listeners, DefaultBootstrapContext bootstrapContext, ApplicationArguments applicationArguments) { // Create and configure the environment ConfigurableEnvironment environment = getOrCreateEnvironment(); configureEnvironment(environment, applicationArguments.getSourceArgs()); ConfigurationPropertySources.attach(environment); //本行代码是解析配置的核心代码 listeners.environmentPrepared(bootstrapContext, environment