配置的加载
SpringBoot会从application.properties加载配置信息到Spring的Environment中。
同时也可以使用YAML('.yml')文件来替代'.properties'。
加载顺序
1. A /config subdirectory of the current directory.
位于与jar包同级目录下的config文件夹,也就是当前目录下的/config子文件夹下配置
2. The current directory
位于与jar包同级目录下(jar包当前目录)
3. A classpath /config package
classpath下的config目录,如idea环境下,resource文件夹下的config文件夹,编译之后就是classpath下的config文件夹下配置
4. The classpath root
classpath根目录,如idea环境下,resource文件夹下配置
加载顺序可以要查看ConfigFileApplicationListener#DEFAULT_SEARCH_LOCATIONS
关于application与bootstrap
application是SpringBoot的默认配置加载名称(可以通过spring.config.name修改),而bootstrap是SpringCloud提供的系统级别配置加载名称(可以通过spring.cloud.bootstrap.name修改)。
bootstrap配置是优先级是最高的,并且,bootstrap的配置不会被覆盖。
可参考源码BootstrapApplicationListener。BootstrapApplicationLis主要是创建了新环境,进行了bootstrap配置文件的加载
附1:加载配置ConfigFileApplicationListener源码导读
![49e07b8b2181db885ef6d76b638ee89f.png](https://i-blog.csdnimg.cn/blog_migrate/061b54e9f21f349be5e977e94acbca83.jpeg)
![9869dd2cd797cbd0768457e3b2e3ce4c.png](https://i-blog.csdnimg.cn/blog_migrate/47603801a8458948e3021631047b8eec.jpeg)
![6cdc23dfc9610f67075f3c98e4747114.png](https://i-blog.csdnimg.cn/blog_migrate/09c7ab0964f201b8dc76d0eef442686a.jpeg)
最终可以跟到实际的加载处理方法
![9400f810f661baf7c2f6cdde0f42c622.png](https://i-blog.csdnimg.cn/blog_migrate/82dff1e00a499760a37b040ccf6b035d.jpeg)
Loader
![511a6711c287a7ea2bd7b908397bd84d.png](https://i-blog.csdnimg.cn/blog_migrate/cf706d7bb02041074ab31cbf32bc30fa.jpeg)
然后,在load配置文件时,根据canLoadFileExtension来进行支持的配置文件匹配,然后加载。
![cf9e1ad107796d27ad892ef435f39fa8.png](https://i-blog.csdnimg.cn/blog_migrate/87cbff2cba31db91963a69ad7b30d5ea.jpeg)