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

server/2025/2/7 4:22:04/

在 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/server/165584.html

相关文章

【MySQL】常用语句

目录 1. 数据库操作2. 表操作3. 数据操作(CRUD)4. 高级查询5. 索引管理6. 用户与权限7. 数据导入导出8. 事务控制9. 其他实用语句注意事项 如果这篇文章对你有所帮助,渴望获得你的一个点赞! 1. 数据库操作 创建数据库 CREATE DATA…

Leetcode 343. 整数拆分

343. 整数拆分 - 力扣(LeetCode)https://leetcode.cn/problems/integer-break/description/给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最…

【大数据技术】搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)

搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) jdk-8u361-linux-x64.tarhadoop-3.3.6.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Hadoop+MapReduce+Yarn的详细步骤。 注意: 统一约定将软件安装包存放…

面试题整理:Java多线程(二)多线程、死锁、乐观锁悲观锁、线程池

文章目录 线程1. ⭐什么是线程和进程?区别和联系?2. 堆和方法区是什么?3. 如何创建线程?4. ⭐线程的生命周期和状态有什么?5. 什么是线程上下文切换?6. Thread.sleep()和Object.wait()的异同点?7. 直接调用…

【办公类-99-01】20250201学具PDF打印会缩小一圈——解决办法:换一个PDF阅读器

背景需求: 2024年1月13日,快要放寒假了,组长拿着我们班的打印好的一叠教案来调整。 “前面周计划下面的家园共育有调整,你自己看批注。” “还有你这个教案部分的模版有问题,太小(窄)了。考虑…

【LLM-agent】(task4)搜索引擎Agent

note 新增工具:搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件&#xf…

23.Word:小王-制作公司战略规划文档❗【5】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO10.11​ NO12​ NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张:纸张大小:宽度/高度→页边距:上下左右→版式:页眉页脚→文档网格:勾选只指定行网格✔→ 每页:…

STM32-启动文件

STM32-启动文件 简介启动文件栈空间开辟堆空间开辟中断向量表定义复位程序 系统启动流程 简介 STM32 启动文件由 ST 官方提供,由汇编编写,是系统上电复位后执行的第一个程序。 启动文件主要做的工作。 1.初始化堆栈指针 SP _initial_sp 2.初始化程序计…