「SpringBoot系列」配置文件加载优先级解析

SpringBoot提供了外部分配置功能,可以使用属性文件(properties)、YAML(yml)文件、环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值。

本章节中,主要解析SpringBoot对属性文件(properties)和YAML(yml)文件的加载顺序和属性优化级

Note: SpringBoot中的配置加载顺序与其属性优先级是相反的,每多时候,我们说的加载顺序,不是属性优先级。超先加载的配置文件则属性优先级越低。

我们需要先带着这种思路来进行下面的阅读。

配置文件目录与属性优化级

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文件夹下配置

上文所标识的顺序中,表示的是属性的优化先级。也就是说,加载的顺序与其相反,从4开始加载。

16c3681dc91a4ad1bee52a82a966b449.png

如图所示中的序列,表示的是配置文件的加载序顺。加载顺序正好与可放置目录中的序顺相反。

加载1. classpath:/ -- 优先级4. The classpath root

加载2. classpath:/config/ -- 优先级3. A classpath /config package

加载3. file:./ -- 优先级2. The current directory

加载4. file:./config/ -- 优先级1. A /config subdirectory of the current directory.

application与bootstrap

bootstrap优先于application加载, 用于应用程序上下文的引导阶段。由spring cloud BootstrapApplicationListenerApplicationEnvironmentPreparedEvent时进行加载。

可以将bootstrap配置理解为系统级别的参数配置,这些参数一般不会变更。

application配置可以理解为定义应用级别的参数,可以覆盖替换bootstrap的配置信息。

也就是说application的属性优先较高,加载时先加载bootstrap配置文件,再加载application配置文件。

properties与yml

properties的配置文件属性优先高于yml配置,yml配置文件优先于propertes配置文件加载

你可能感兴趣的:(「SpringBoot系列」配置文件加载优先级解析)