Springboot配置文件读取-ConfigFileApplicationListener

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot配置文件读取-ConfigFileApplicationListener相关的知识,希望对你有一定的参考价值。

参考技术A ConfigFileApplicationListener 主要作用就是读取应用的配置文件并add到Environment的PropertySources列表里

Springboot应用在启动的时候准备好了环境后就会触发 ApplicationEnvironmentPreparedEvent 事件就开始执行读取配置的逻辑:

首先加载当前激活的Profile列表

然后从默认的 classpath:/,classpath:/config/,file:./,file:./config/ 这四个目录下

查找默认的application-profile名字对应的配置文件,配置文件格式支持两大类(Properties和Yaml)既:.properties .xml .yml .yaml

可以修改默认的配置文件名字(默认:application),可以指定多个比如 --spring.config.name= application,demo

可以修改默认的配置文件路径,比如 --spring.config.location= file:///C:/config/ (目录结尾不带“/”会按照文件处理,而不是目录,容易掉坑)

阅读源码入口就从他的onApplicationEvent开始跟即可,将自身添加到postProcessor列表里并执行postProcessEnvironment方法,核心逻辑是靠一个Loader内部类
new Loader(environment, resourceLoader).load()

大概就是,如果没有spring.profiles.active 和 spring.profiles.include都没有特别指定激活的profile的话

没有特别指定profile的话就是:null + default,也就是我们常见的application.properties 和 application-default.properties这种

如果指定了那就是:null + 已经激活(pre-existing)的profile + spring.profiles.active + spring.profiles.include

举个例子,假如激活了多个profile比如:--spring.profiles.active=prd1,prd2,最终优先级上prd1 > prd2 > default(null)

以上是关于Springboot配置文件读取-ConfigFileApplicationListener的主要内容,如果未能解决你的问题,请参考以下文章

Springboot打成JAR包后读取外部配置文件

Springboot配置文件读取-ConfigFileApplicationListener

springboot读取不到引入配置文件值

springBoot读取配置文件多环境热部署打包等基本配置

springboot读取yml配置文件

springboot读取yml配置文件