application.yaml和bootstrap.yaml的区别

  1. 加载顺序

    • bootstrap.yaml(或bootstrap.yml
      • 这个配置文件会在应用程序上下文(ApplicationContext加载之前被加载。它主要用于加载一些对应用程序启动至关重要的配置信息,例如配置中心(如 Spring Cloud Config Server)的位置、加密 / 解密信息等。因为这些配置信息通常是应用程序启动初期就需要用到的,比如应用需要从配置中心获取其他配置,就必须先知道配置中心的地址,这个地址就可以在bootstrap.yaml中设置。
    • application.yaml(或application.yml
      • 它是在应用程序上下文加载时被加载的,加载顺序在bootstrap.yaml之后。这个文件用于定义应用程序的大部分业务相关的配置,比如数据库连接配置、服务端口号、日志级别等。这些配置是应用在运行过程中具体业务逻辑所需要的配置信息。
  2. 用途侧重点

    • bootstrap.yaml
      • 更侧重于系统级别的配置和外部化配置的引导。它用于配置应用和外部配置源(如配置服务器)的连接信息,使得应用能够正确地从外部获取其他配置。另外,在一些场景下,比如使用 Spring Cloud 进行微服务开发时,bootstrap.yaml还用于配置服务注册与发现相关的信息,如 Eureka 或 Nacos 的配置等,这些配置对于服务能够正确地注册到注册中心并被发现是非常关键的。
    • application.yaml
      • 主要用于应用程序自身的业务配置。例如,在一个 Web 应用中,application.yaml可以配置 Spring MVC 的相关参数,如视图解析器的配置、静态资源路径等。对于数据库访问,它可以配置数据源的具体细节,如数据库连接池的大小、数据库驱动等信息,这些配置直接影响到应用程序如何进行业务数据的访问和处理。
  3. 配置覆盖规则

    • bootstrap.yamlapplication.yaml中存在相同的配置项时,一般情况下,bootstrap.yaml中的配置会优先被加载并且在加载application.yaml时,如果没有特殊的配置覆盖机制,bootstrap.yaml中的配置不会被覆盖。不过,具体的覆盖规则也可以根据应用所使用的框架和配置加载策略进行调整。例如,在某些情况下,可以通过特定的配置属性或者环境变量来改变这种默认的覆盖规则,使得application.yaml中的配置能够覆盖bootstrap.yaml中的相同配置项。
  4. 应用场景示例

    • bootstrap.yaml场景
      • 假设我们有一个微服务架构的应用,使用 Spring Cloud Config Server 来集中管理配置。在bootstrap.yaml中,我们会配置 Config Server 的地址,如下:
        spring:
          cloud:
            config:
              uri: http://config-server:8888

  • 这样,应用在启动时就能够根据这个地址去 Config Server 获取其他配置文件,这个配置对于应用能否正确获取后续的配置是至关重要的,所以放在bootstrap.yaml中。
  • application.yaml场景
    • 在同一个微服务应用中,application.yaml可以配置服务自身的业务相关信息,如服务端口号和数据库连接信息。例如:
      server:
        port: 8080
      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/mydb
          username: root
          password: password

      这里配置了服务运行的端口为8080,以及数据库连接的相关信息,这些是应用在运行过程中进行业务操作(如提供 Web 服务、访问数据库等)所需要的配置,所以放在application.yaml中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小懒懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值