Spring里、配置application.yaml、bootstrap.yaml application.properties、bootstrap.properties他们的区别。

Spring里、配置application.yaml、bootstrap.yaml application.properties、bootstrap.properties他们的区别。

一、先从后缀来讲:

​ SpringBoot默认支持properties和yaml(或者yml)两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用yaml格式。也就是yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要。虽然默认为properties,但现在多用yaml。

​ 如果工程中同时存在application.properties文件和 application.yaml文件,yaml文件会先加载,而后加载的properties文件会覆盖yaml文件。

二、在分析前缀:

​ bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。

​ application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

三、覆盖分析

启动上下文时,Spring Cloud 会创建一个 Bootstrap Context,作为 Spring 应用的 Application Context 的父上下文。

初始化的时候,Bootstrap Context 负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的 Environment。Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖

也就是说如果加载的 application.yml 的内容标签与 bootstrap 的标签一致,application 也不会覆盖 bootstrap,而 application.yml 里面的内容可以动态替换。

四、应用场景分析:

​ SpringCloud配置时、这时需要在 bootstrap.yml 配置文件中指定 spring.application.name 和 spring.cloud.nacos,添加连接到配置中心的配置属性来加载外部配置中心的配置信息。

spring:
  application:
    name: yxmall
  cloud:
    nacos:
      config:
        server-addr: 192.168.56.10:8848
        namespace: 93ab9b83-cca4-48b5-abad-8a46f12ac0ba
        ext-config:
          - dataId: redis.yml
          - dataId: druidDatasourceView.yml
        file-extension: yml
      discovery:
        namespace: 93ab9b83-cca4-48b5-abad-8a46f12ac0ba
        server-addr: 192.168.56.10:8848
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8


​ 而正常基本application.yaml满足单体架构配置要求。优先选用yaml。带缩进的格式对于配置的显示更加直观。当然 yaml 配置也不是万能的,例如,yaml 配置目前不支持 @PropertySource 注解。使用时注意即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值