在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别

在 Spring Boot 项目中,bootstrap.ymlapplication.yml 是两个常用的配置文件,它们的作用和加载顺序有所不同。以下是它们的详细说明:


1. bootstrap.yml

  • 作用

    • bootstrap.yml 是 Spring Cloud 项目中的配置文件,用于加载应用程序启动阶段的配置。
    • 它优先于 application.yml 加载,通常用于配置应用程序上下文的初始属性。
    • 常用于配置 Spring Cloud 相关的组件,例如:
      • Spring Cloud Config(远程配置中心)
      • Nacos(服务发现和配置管理)
      • ConsulEureka(服务注册与发现)
  • 加载时机

    • 在应用程序启动时,bootstrap.yml 会最先被加载。
    • 它由 bootstrap 上下文加载,优先级高于 application.yml
  • 典型配置

    spring:
      application:
        name: my-service  # 应用名称
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848  # Nacos 配置中心地址
            file-extension: yaml         # 配置文件格式
            namespace: dev               # 命名空间
            group: DEFAULT_GROUP         # 配置组
          discovery:
            server-addr: 127.0.0.1:8848  # Nacos 服务发现地址
    

2. application.yml

  • 作用

    • application.yml 是 Spring Boot 项目中的主配置文件,用于配置应用程序的运行时属性
    • 它会在 bootstrap.yml 之后加载,通常用于配置应用程序的具体行为。
    • 可以配置数据库连接、日志、缓存、端口等。
  • 加载时机

    • bootstrap.yml 加载完成后,application.yml 会被加载。
    • 它由 application 上下文加载。
  • 典型配置

    server:
      port: 8080  # 服务端口
    
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/mydb
        username: root
        password: password
        driver-class-name: com.mysql.cj.jdbc.Driver
    
    logging:
      level:
        root: INFO
        com.example: DEBUG
    

3. bootstrap.yml 和 application.yml 的区别

特性bootstrap.ymlapplication.yml
加载顺序优先加载bootstrap.yml 之后加载
作用范围应用程序启动阶段的配置应用程序运行时的配置
典型用途配置远程配置中心、服务发现等配置数据库、日志、端口等
上下文bootstrap 上下文application 上下文
是否必须非必须,仅在需要 Spring Cloud 功能时使用必须,Spring Boot 的主配置文件

4. 配置文件的优先级

Spring Boot 支持多种配置文件格式(如 .yml.properties),它们的加载优先级如下:

  1. bootstrap.yml(或 bootstrap.properties
  2. application.yml(或 application.properties
  3. 外部配置文件(如通过 --spring.config.location 指定的文件)

5. 示例:结合 Nacos 的配置

bootstrap.yml
spring:
  application:
    name: my-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        namespace: dev
        group: DEFAULT_GROUP
      discovery:
        server-addr: 127.0.0.1:8848
application.yml
server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

logging:
  level:
    root: INFO
    com.example: DEBUG

6. 注意事项

  • 如果不需要使用 Spring Cloud 的功能(如远程配置中心、服务发现等),可以只使用 application.yml
  • 在 Spring Cloud 项目中,bootstrap.yml 通常用于配置远程配置中心(如 Nacos、Spring Cloud Config)的连接信息。
  • 如果 bootstrap.ymlapplication.yml 中有相同的配置项,bootstrap.yml 的配置会优先生效。

通过合理使用 bootstrap.ymlapplication.yml,可以更好地管理 Spring Boot 和 Spring Cloud 项目的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早退的程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值