Spring Boot多环境配置核心是分离配置与按需激活,严格遵循application-{profile}.yml命名规范,并通过命令行参数、JVM属性、环境变量、外部/内部配置文件及主文件设置共6种方式按优先级激活,支持分组与条件化组合。

Spring Boot 多环境配置的灵活切换,核心在于“分离配置 + 按需激活”,不靠改代码、不靠手动替换文件,而是通过标准化命名和多种激活方式组合实现。关键不是堆砌方案,而是选对场景、用对层级。
配置文件按规范命名,是切换的前提
必须严格遵循 application-{profile}.yml 或 application-{profile}.properties 格式,例如:
- application-dev.yml:本地开发,启用 H2 内存库、DEBUG 日志、8080 端口
- application-test.yml:CI 流水线使用,连接测试数据库,关闭缓存
- application-prod.yml:生产部署,配置 MySQL 连接池、WARN 日志、80 端口
主配置 application.yml 放通用项(如 server.servlet.context-path、spring.application.name),它会被所有 profile 自动合并,无需重复定义。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
6 种激活方式,按优先级从高到低排列
Spring Boot 按固定顺序加载配置,后加载的同名属性会覆盖前面的。优先级决定了谁说了算:
-
命令行参数(最高):启动时加
--spring.profiles.active=prod,适合运维发布 -
JVM 系统属性:运行时加
-Dspring.profiles.active=test,适合容器内指定 -
操作系统环境变量:设置
SPRING_PROFILES_ACTIVE=dev,适合 Docker/K8s 环境注入 - jar 包外的 application-{profile}.yml:放在 jar 同级 config/ 目录下,便于不重打包更新配置
- jar 包内的 application-{profile}.yml:编译时打入 resources,适合默认内置配置
- application.yml 中 spring.profiles.active(最低):仅作开发默认兜底,不建议在生产中依赖它
进阶技巧:分组与条件化激活
Spring Boot 2.4+ 支持 profile 分组,让复杂环境更清晰:
- 在 application.yml 中定义:
spring:
profiles:
group:
prod: [mysql, aws, security]
激活prod时,自动连带启用 mysql、aws、security 三个子 profile - 用
@Profile("dev && !test")注解控制 Bean 加载,实现逻辑组合判断 - 多个 profile 可同时激活:
--spring.profiles.active=dev,local-cache,适用于叠加特性场景
IDEA 和 Maven 的实操要点
开发阶段高频操作,别总靠改配置文件:
-
IDEA 启动配置:Run → Edit Configurations → 在 Program arguments 填
--spring.profiles.active=dev,或直接在 Active profiles 输入框填dev -
Maven 打包时指定:
mvn clean package -Pprod(配合 pom.xml 中的 <profile> 定义),再结合SPRING_PROFILES_ACTIVE=prod启动 jar - 避免在
application.yml里硬写spring.profiles.active=prod提交到 Git,容易误发生产配置

















