Spring Boot 项目中的 bootstrap.yml 与 application.yml:区别、作用与使用指南
在 Spring Boot(尤其是 Spring Cloud 微服务项目)中,经常会看到两个配置文件:bootstrap.yml 和 application.yml。很多人对它们的区别、使用场景以及是否可以改名感到困惑。本文将详细说明两者的区别、加载时机、典型用途以及改名可能带来的影响。
1. 核心区别对比
| 特性 | bootstrap.yml / bootstrap.properties | application.yml / application.properties |
|---|---|---|
| 加载时机 | 极早:在 Spring 应用上下文(ApplicationContext)创建之前加载 | 在应用上下文创建之后加载 |
| 优先级 | 更高:bootstrap 中的同名配置会覆盖 application 中的配置 | 较低 |
| 主要用途 | 引导阶段必须先读取的配置,尤其是配置中心、服务发现相关 | 普通应用配置、业务参数 |
| 典型配置内容 | - spring.cloud.nacos.config.server-addr - spring.cloud.nacos.discovery.server-addr - spring.cloud.config.uri - spring.profiles.active(部分场景) - 加密密钥、profile 切换等 |
- server.port - spring.datasource. - spring.redis. - logging.level.* - 自定义业务参数(如 jwt.secret、app.name) |
| 是否支持动态刷新 | 支持(配置中心拉取的配置通常通过 bootstrap 读取) | 部分支持(但很多配置中心优先从 bootstrap 读取) |
| Spring Boot 2.4+ 默认 | 需要手动引入 spring-cloud-starter-bootstrap 依赖才能启用 |
默认启用,只加载 application 文件 |
| 改名影响 | 改名会导致 Spring Cloud 找不到引导配置,项目大概率启动失败或功能缺失 | 可改名(通过 spring.config.name 指定),但不推荐 |
2. 为什么需要两个配置文件?
Spring Boot 的启动流程分为两个阶段:
-
Bootstrap Phase(引导阶段)
- 发生

7361

被折叠的 条评论
为什么被折叠?



