美文网首页
spring cloud 及 spring boot 启动配置文

spring cloud 及 spring boot 启动配置文

作者: JohnYuCN | 来源:发表于2022-11-11 17:10 被阅读0次

    一、文件类型及加载过程

    1. 文件名称组成:

    [主文件名]    - [后缀名] .    [扩展名]
    [bootstrap | application] [ -profile ] . [ properties | yaml ]
    

    例如:

    applicaiton-dev.properties
    bootstrap-product.yaml
    

    2. 加载文件所使用的【类库】:

    application 文件由 spring-boot-starter 依赖的 spring-core 进行加载
    bootstrap 文件由 spring-cloud-starter 依赖的 spring-cloud-context 进行加载

    3. 加载策略:

    总体策略是:根据文件位置、主文件的名称、后缀名称称、扩展名称进行顺序加载,同名属性进行覆盖,异名属性进行合并;加载全部结束后,完成容器的启动

    二、文件的加载顺序:

    文件的加载分为三个阶段(在不包含spring cloud config的情况下):

    1. 第一阶段:在启动的工作区中加载

    bootstrap → config/bootstrap → bootstrap-profile →  → config/bootstrap-profile → [进入第二阶段]
    

    2. 第二阶段: 在 classpath 中加载

    bootstrap → config/bootstrap → bootstrap-profile → config/bootstrap-profile →
    
    application → config/application → application-profile → config/application-profile → [进入第三阶段]
    

    3. 第三阶段: 重新回到启动工作区中加载

    application → config/application → application-profile → config/applicaton-profile → [结束]
    

    三、例外情况

    1. 当启动参数中使用了--spring.config.location=[启动配置文件] 时,以上顺序全部失效,而使用指定文件中的内容,不再有“覆盖和合并”的概念。
    2. 当使用了bootstrap,并且配置了: spring.cloud.config 或者 spring.cloud.nacos.config 时,此时将会使用远程配置文件的加载器,加载指定的 config server中的相关配置,然后再重新转回到正常的文件加载顺序中;同时“覆盖策略”将不再生效,即后序中的同名属性不会被覆盖掉;如果需要“覆盖策略”,可以在相应的 configServer 中进行如下配置(必须在config server中):
    spring.cloud.config.allow-override=true
    spring.cloud.config.override-none=true
    spring.cloud.config.override-system-properties=false
    

    相关文章

      网友评论

          本文标题:spring cloud 及 spring boot 启动配置文

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