springboot yml配置文件加载优先级实测
开门见山,先说结论
一、springboot 不同位置的yml配置文件加载优先级,从高到低:
1、./config
2、./
3、classpath:./config
4、classpath:./
classpath 等价于 main/java + main/resources 的根目录,就相当于build后的target文件夹下classes文件夹。
四个位置的实测示例如下图:
二、优先级的作用:
高优先级的配置会优先加载,具体的说就是,按照上述4个位置位置的优先级去扫描配置文件,当扫描到第一个配置文件后,就不会去扫描后面低优先级位置的配置文件了。
三、多环境配置
注意,对于多环境配置一般会有application.yml和application-xxx.yml两种配置文件。
springboot是默认扫描加载application.yml文件的。如果该文件中指定了 profile.active=xxx,则会继续去扫描四个位置的application-xxx.yml文件,然后采用的配置是:
application-xxx.yml文件的配置+在application.yml有的且在application-xxx.yml中没有的。
加载application-xxx.yml配置文件,也是按照上述4个位置的优先级去扫描application-xxx.yml配置文件,当扫描到第一个application-xxx.yml配置文件后,就不会去扫描后面低优先级位置的application-xxx.yml配置文件了。