Spring Boot 配置文件的加载顺序

Spring Boot 中有多个配置文件,主要有:

bootstrap.yml 或 bootstrap.properties:

主要用于 Spring Cloud 应用中,配置应用启动时需要的参数,通常包含应用的环境配置、服务发现、配置中心等。

bootstrap.yml 会在 Spring Boot 应用的 上下文初始化之前加载。它用于初始化 Spring 环境和配置,特别是在 Spring Cloud 中,它会读取配置中心的相关配置。

application.yml 或 application.properties:

这是 Spring Boot 中默认的配置文件,通常用于定义应用的业务逻辑配置、数据库连接、日志设置等。

application.yml 会在 bootstrap.yml 之后加载。

配置加载的优先级与覆盖规则

在 Spring Boot 中,配置是通过 层叠式(hierarchical)方式加载的,也就是说,后加载的配置文件会覆盖之前加载的配置。

具体的加载顺序和覆盖规则是:

bootstrap.yml(或 bootstrap.properties):首先加载,适用于 Spring Cloud 环境。

application.yml(或 application.properties):紧接着加载,适用于 Spring Boot 默认配置。

后加载的配置会覆盖先加载的配置,所以如果 bootstrap.yml 和 application.yml 中有相同的配置项(例如 jdbc 配置),则 application.yml 中的配置会覆盖 bootstrap.yml 中的配置。

例子

假设你有以下配置:

bootstrap.yml

clike 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db1
    username: user1
    password: pass1

application.yml

clike 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db2
    username: user2
    password: pass2

在这种情况下,application.yml 中的 datasource 配置会覆盖 bootstrap.yml 中的 datasource 配置。也就是说,应用在启动时,数据库连接的 URL 将是 jdbc:mysql://localhost:3306/db2,而不是 jdbc:mysql://localhost:3306/db1。

关键总结

bootstrap.yml 会先加载,通常用于 Spring Cloud 的配置。

application.yml 会后加载,覆盖 bootstrap.yml 中的相同配置。

后加载的配置会覆盖先加载的配置,这是 Spring Boot 配置的常见规则。

因此,后加载的配置(如 application.yml)会覆盖先加载的配置(如 bootstrap.yml)

相关推荐
用户409666013175113 分钟前
Lombok 你用对了吗?@Data 之外的 6 个隐藏神器
java·后端·代码规范
梅头脑18 分钟前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
董员外20 分钟前
RAG 系统进化论(二):Naive RAG,检索增强生成的最小闭环
前端·人工智能·后端
久久学姐31 分钟前
基础转码学 AI:Java+Python 双语言入门,3 个月可落地实战项目
java·python·ai·转码·实战项目
花生了什么事o33 分钟前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言
掘金一周38 分钟前
看看大家每月的成本有多少 | 沸点周刊 7.30
前端·人工智能·后端
aramae44 分钟前
C++ IO流完全指南:从C标准库到C++流式编程
服务器·c语言·开发语言·c++·后端
SelectDB1 小时前
Apache Doris 事务保障实战教程:从三阶段提交到 Flink 精确一次写入
后端
SelectDB1 小时前
Apache Doris 向量化执行实战教程:从 CPU 指令到性能验证的完整实践
后端
神奇小汤圆1 小时前
别再乱排查了!Kafka 消息积压、重复、丢失,根源基本都是 Rebalance!
后端