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)

相关推荐
AskHarries5 小时前
OAuth 登录怎么接
后端
烛影摇红透纱窗5 小时前
ForkJoinPool 与工作窃取
java
浩瀚地学6 小时前
【面试算法笔记】0302-哈希表-哈希表实现
java·经验分享·笔记·算法·面试
AC赳赳老秦6 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
掘金者阿豪6 小时前
上线前能跑,上线后挂了,三个隐性的SQL陷阱
后端
用户8356290780516 小时前
如何使用 Python 为 PDF 添加和管理图层
后端·python
名侦探7226 小时前
构建 Agent 的五大难点与解决方案
java·大数据·人工智能
Demons_kirit7 小时前
图库原理(以阿里云OSS为案例)
java·阿里云·云计算
SimonKing7 小时前
那个号称"对标 Spring"的国产框架 Solon,到底行不行?
java·后端·程序员
Lethehong7 小时前
飞算Java:从需求梳理到风险闭环,搭建云盾企业信息安全与权限管理平台
java·开发语言