
Spring Boot 支持通过逗号分隔的 spring.profiles.active 激活多个 Profile,从而自动加载 application.properties(默认)及对应 application-{profile}.properties 文件,实现公共配置与区域化配置的分层叠加。
spring boot 支持通过逗号分隔的 `spring.profiles.active` 激活多个 profile,从而自动加载 `application.properties`(默认)及对应 `application-{profile}.properties` 文件,实现公共配置与区域化配置的分层叠加。
在 Spring Boot 中,配置文件的加载遵循「默认 + 激活 Profile」的叠加机制:application.properties 总是被加载(作为基础配置),而所有通过 spring.profiles.active 指定的 Profile(如 dev, dev-us1)会按顺序触发对应 application-{profile}.properties 文件的加载,并后加载的配置项会覆盖先加载的同名属性(即“就近覆盖”原则)。
要同时加载 application.properties(默认)、application-dev.properties(开发通用)和 application-dev-us1.properties(美东专属),只需激活多个 Profile:
# 启动时指定多个 profile(逗号分隔,无空格) java -Dspring.profiles.active=dev,dev-us1 -jar myapp.jar
或在 application.properties 中声明:
spring.profiles.active=dev,dev-us1
此时 Spring Boot 将按以下顺序加载并合并配置:
- application.properties → 全局默认配置
- application-dev.properties → 开发环境通用配置(覆盖第1步中的同名项)
- application-dev-us1.properties → 美东区域专属配置(最终覆盖前两者中的同名项)
✅ 关键说明:
- Profile 名称无需存在层级关系(如 dev-us1 并非 dev 的子集),Spring Boot 仅按字符串匹配文件名;
- 多 Profile 激活不依赖 profile 继承或嵌套,纯属并列加载;
- 若需区分环境与区域(如 dev + us1),推荐使用更清晰的命名(如 spring.profiles.active=dev,us1),对应 application-us1.properties,避免语义混淆;
- 配置优先级严格遵循加载顺序:越靠后的 Profile,其配置权重越高。
? 进阶提示:从 Spring Boot 2.4 开始,推荐使用 spring.config.import 实现更灵活的外部配置导入(如 spring.config.import=optional:configserver: 或 optional:file:./config/app-dev-us1.properties),但多 Profile 级联加载仍是最轻量、最标准的方案。











