Spring Boot多环境配置本质是通过Profile机制实现,即主配置文件(application.yml)存放公共配置,环境专属文件(如application-dev.yml)存放差异项,通过spring.profiles.active指定激活环境,启动时自动合并并覆盖同名配置。

Spring Boot 多环境配置本质是通过 Profile 机制 实现的,核心思路是:把公共配置放主文件,各环境特有配置拆到独立文件,再用一个开关决定加载哪一套。不复杂但容易忽略细节。
配置文件命名和存放位置
必须严格遵守命名规则,否则 Spring Boot 找不到对应配置:
- 主配置文件:application.yml 或 application.properties(放在
src/main/resources/下) - 环境专属文件:application-dev.yml、application-test.yml、application-prod.yml(同样放在 resources 目录下)
- 文件名中的
dev、test、prod就是 profile 名,可自定义,但要前后一致
在主配置中指定激活哪个环境
在 application.yml 中写明当前要用的环境:
spring:
profiles:
active: dev这样启动时就会自动加载 application-dev.yml。也可以临时覆盖,比如运行 jar 包时加参数:
立即学习“Java免费学习笔记(深入)”;
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
java -jar myapp.jar --spring.profiles.active=prod
各配置文件的内容分工
主配置(application.yml)只放通用项,例如应用名、日志基础级别、通用开关:
spring:
application:
name: user-service
logging:
level:
root: info环境专属文件只写差异项,比如开发环境连本地 MySQL,生产环境连云数据库:
- application-dev.yml:
server.port: 8081、spring.datasource.url: jdbc:mysql://localhost:3306/dev_db - application-prod.yml:
server.port: 80、spring.datasource.url: jdbc:mysql://rds-prod:3306/prod_db
Spring Boot 启动时会自动合并:主配置为底,环境配置覆盖同名项。
YAML 单文件多文档块(备选方案)
如果不想建多个文件,也可全写在一个 application.yml 里,用 --- 分隔不同环境块:
# 公共部分
spring:
application:
name: user-service
<hr /><h1>开发环境</h1><p>spring:
profiles: dev
server:
port: 8081</p><hr /><h1>生产环境</h1><p>spring:
profiles: prod
server:
port: 80注意:每个块开头必须有 spring.profiles: xxx,且整个文件仍需通过 spring.profiles.active 指定启用哪一个。

















