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

ops/2025/2/12 1:54:45/

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


bootstrapyml_5">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/mydbusername: rootpassword: passworddriver-class-name: com.mysql.cj.jdbc.Driverlogging:level:root: INFOcom.example: DEBUG
    

bootstrapyml__applicationyml__66">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 的配置

bootstrapyml_86">bootstrap.yml
spring:application:name: my-servicecloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yamlnamespace: devgroup: DEFAULT_GROUPdiscovery:server-addr: 127.0.0.1:8848
application.yml
server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: passworddriver-class-name: com.mysql.cj.jdbc.Driverlogging:level:root: INFOcom.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 项目的配置。


http://www.ppmy.cn/ops/157159.html

相关文章

无人机目标飞行跟踪

无人机目标飞行跟踪主要通过无人机搭载的摄像头或其他传感器采集环境信息,通过算法分析识别目标物体,并对其进行精确跟踪‌。‌无人机采用先进的控制算法和导航系统,根据目标的位置和运动状态动态调整飞行路径‌。这些算法能够处理传感器传来…

基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计

当今巡检机器人机械臂在管廊隧道等复杂环境的作业过程中,经常面临空间狭窄 且障碍物密集的问题,这就要求机械臂具备在狭窄空间进行避障路径规划的能力。此 外,一些不确定性因素如在突发或异常环境条件下,机械臂的全局状态信息感知…

Excel中对单列数据进行去重筛选

在Excel中对单列数据进行去重筛选,可以按照以下步骤操作: 方法一:使用“删除重复项”功能 选择数据列:点击要处理的列头(如A列)。打开“删除重复项”: Excel 2007及以后版本:点击“…

Neo4j图数据库学习(二)——SpringBoot整合Neo4j

一. 前言 本文介绍如何通过SpringBoot整合Neo4j的方式,对图数据库进行简单的操作。 Neo4j和SpringBoot的知识不再赘述。关于Neo4j的基础知识,有兴趣可以看看作者上一篇的文章:Neo4j图数据库学习(一)——初识CQL 二. 前置准备 新建SpringBo…

To `panic!` or Not to `panic!`: Rust 中错误处理策略的选择

一、何时选择 panic! 1.1 当错误不可恢复时 调用 panic! 表示程序遇到了无法继续执行的严重错误。在以下情况中,使用 panic! 是合适的: 不可预期的错误状态:当某个假定或合同被破坏时,继续执行可能导致更严重的问题。例如&…

《利用原始数据进行深度神经网络闭环 用于光学驻留空间物体检测》论文精读

Deep Neural Network Closed-loop with Raw Data for Optical Resident Space Object Detection 摘要 光学勘测是观测驻留空间物体和空间态势感知的重要手段。随着天文技术和还原方法的应用,宽视场望远镜在发现和识别驻留空间物体方面做出了重大贡献。然而&#x…

Oracle中TAF与SCANIP全面解析

在Oracle数据库中,透明应用故障转移(Transparent Application Failover, TAF)和单一客户端访问名称(Single Client Access Name, SCAN)IP是两个关键技术,旨在提高数据库系统的可用性和可扩展性。本文将深入…

RabbitMQ 消息顺序性保证

方式一:Consumer设置exclusive 注意条件 作用于basic.consume不支持quorum queue 当同时有A、B两个消费者调用basic.consume方法消费,并将exclusive设置为true时,第二个消费者会抛出异常: com.rabbitmq.client.AlreadyClosedEx…