美文网首页JAVA
「SpringBoot系列」配置文件加载优先级解析

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

作者: 厦门张明爽 | 来源:发表于2019-12-30 17:43 被阅读0次

    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系列」配置文件加载优先级解析

        本文链接:https://www.haomeiwen.com/subject/ynbmoctx.html