Spring Boot基于“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让开发者无须手动进行配置)的理念,能够使开发者快速构建起一个项目。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,而可以不用或者只需要很少的Spring配置。
通常一个Spring Boot的启动程序只有寥寥数行代码,却能够使项目运行起来:
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
下面通过源代码分析一下,Spring Boot在启动时是如何加载配置文件的(基于Spring Boot 1.4.0.RELEASE)。
一、入口方法SpringApplication.run分析
run方法的源代码如下:
可以看到,Spring Boot是通过listener监听器加载配置文件的。Spring Boot在启动完成时会广播一个SpringApplicationEvent事件:
而SpringApplicationEvent事件是继承自ApplicationEvent事件的,代码如下:
二、监听类实现分析
ApplicationEvent事件由ApplicationListener接口类实现监听,其实现类之一ConfigFileApplicationListener能够监听上面广播出来的SpringApplicationEvent事件,代码如下:
在ConfigFileApplicationListener中,postProcessEnvironment方法是查找application.yml配置文件的入口方法:
查看其中调用的三个方法之一的addPropertySources方法: