"小崔学会了外部化配置,但发现 dev、test、prod 三套配置都塞在同一个
application.yml里,既混乱又不安全。白歌说:'Profile 就是来解决这个问题的——为每个环境准备独立的配置集,启动时按需加载。'这一章,你将掌握 Spring Boot 多环境配置隔离与切换机制。"
章节导读:Profile 与环境切换
本章定位
本章解决的核心问题:Spring Boot 的 Profile 机制如何解决"同一份应用如何在不同环境(dev / test / prod)使用不同的配置集",让环境切换从"手动改配置"升级为"自动按需加载"。Profile 是外部化配置的进阶用法。
学习路线图
学习顺序说明:先理解 Profile 的核心概念与激活方式(命令行参数、JVM 参数、application.yml)→ 再掌握 application-{profile}.yml 的命名约定、多文档 YAML 语法与配置组织方式。两者共同构成"环境隔离"的完整闭环。
文件关系说明
| 文件 | 一句话角色 |
|---|---|
Profile.md | 建立 Profile 的整体认知,掌握激活方式与 @Profile 注解的使用场景,实现 Bean 级别的环境条件装配。 |
多环境配置文件.md | 掌握 application-{profile}.yml 的命名约定、多文档 YAML 语法与配置切换示例,实现文件级别的环境隔离。 |
知识图谱
核心逻辑:Profile 是 Spring Boot 的环境隔离机制。@Profile("dev") 实现 Bean 级别的条件装配——只在 dev 环境注册该 Bean;application-{profile}.yml 实现文件级别的配置隔离——每个环境独立配置文件,公共配置放在 application.yml 中。启动时通过 --spring.profiles.active=prod 激活指定环境,环境配置自动覆盖公共配置,实现"一份代码、多套环境、一键切换"。
与上下章的衔接
上一章回顾:你学会了外部化配置,把配置从代码中抽离。但同一份 application.yml 中如果同时存放 dev 和 prod 的配置,会混乱且不安全。Profile 机制解决了"多配置如何共存"的问题。
下一章预告:Profile 不仅用于数据源切换,还可用于嵌入式服务器(Tomcat/Jetty/Undertow)的参数差异化配置。下一章「内嵌服务器与部署」将带你理解 Spring Boot 的自包含部署能力,dev 端口 8080、prod 端口 80,都由配置驱动。