ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Boot 中application.yml与bootstrap.yml的区别

2022-06-10 12:33:51  阅读:151  来源: 互联网

标签:配置 yaml Spring bootstrap application yml 加载


1.加载顺序

这里主要是说明application和bootstrap的加载顺序。

bootstrap.yml(bootstrap.properties)先加载

application.yml(application.properties)后加载

  • bootstrap.yml 用于应用程序上下文的引导阶段。
  • bootstrap.yml 由父Spring ApplicationContext加载。

父ApplicationContext 被加载到使用 application.yml 的之前。

2.配置区别

bootstrap.yml 和application.yml 都可以用来配置参数。

  • bootstrap.yml:配置一些引导系统启动的参数,这些参数一旦指定后就不会变动了。比如程序的端口号,配置中心的地址等。
  • application.yml:应用级别的参数配置,可能会根据业务需求做动态配置。比如日志级别,一些开关参数等。

使用Spring Cloud Config Server时,应在 bootstrap.yml 中指定:

spring.application.name
spring.cloud.config.server.git.uri

3.一些加密/解密信息

实例:

bootstrap.yml
spring:
 application:
  name: service-a
 cloud:
  config:
   uri: http://127.0.0.1:8888
   fail-fast: true
   username: user
   password: ${CONFIG_SERVER_PASSWORD:password}
   retry:
    initial-interval: 2000
    max-interval: 10000
    multiplier: 2
    max-attempts: 10
当使用Spring Cloud时,通常从服务器加载“real”配置数据。为了获取URL(和其他连接配置,如密码等),您需要一个较早的或“bootstrap”配置。因此,您将配置服务器属性放在bootstrap.yml中,该属性用于加载实际配置数据(通常

覆盖application.yml [如果存在]中的内容)。

当然,在一些情况上不用那么区分这两个文件,你只需要使用application文件即可,把全部选项都写在这里,效果基本是一致的,在不考虑上面的加载顺序覆盖的问题上。

4. 举例

nacos配置中心的相关配置如下

spring:
  profiles:
    active: @profiles.active@
  application:
    name: payment-service-dubbo-nacos
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        # 配置注册在tpag这个用户专有的namespace
        namespace: 6f97a206-ce19-44c2-85be-c601170d306e
        group: ${spring.application.name}
        username: tpag
        password: tpag
        refresh-enabled: true
        # 这边的shared-config和ext-config不能配置namespace,和上面的配置共享一个namespace,所以一般用于读取一个团队内部的共享文件
        extensionConfigs[0]:
          data-id: ext1.yaml
          refresh: true
          # 默认是DEFAULT_GROUP
          group: ${spring.application.name}
        extensionConfigs[1]:
          data-id: ext2.yaml
          refresh: true
          group: ${spring.application.name}
        shared-configs[0]:
          data-id: share1.yaml
          refresh: true
          group: ${spring.application.name}
        shared-configs[1]:
          data-id: share2.yaml
          refresh: true
          group: ${spring.application.name}

这几个配置文件加载的顺序是 bootstrap.yml > application.yml > application-dev.yml > share1.yaml > share2.yaml > ext1.yaml > ext2.yaml > cloud:nacos:config标签下面dataId指定的配置文件

假如配置文件中有相同的配置,后加载的配置会覆盖先加载的配置,所以如果使用Nacos配置中心的话,nacos上的配置的优先级会比较高。

 

标签:配置,yaml,Spring,bootstrap,application,yml,加载
来源: https://www.cnblogs.com/yifanSJ/p/16362804.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有