> 技术文档 > 【Java后端】SpringBoot配置多个环境(开发、测试、生产)

【Java后端】SpringBoot配置多个环境(开发、测试、生产)

Spring Boot 中配置多个环境(开发、测试、生产)通常用 配置文件分环境管理 + 启动参数切换 的方式来实现。下面一个完整的实践指南:


🔹 1. 使用多配置文件管理环境

Spring Boot 默认支持 application-{profile}.propertiesapplication-{profile}.yml 文件。
常见方式是创建以下配置文件:

src/main/resources/ ├── application.yml  # 通用配置(所有环境共享) ├── application-dev.yml # 开发环境配置 ├── application-test.yml # 测试环境配置 └── application-prod.yml # 生产环境配置

示例:

application.yml(通用配置)

spring: application: name: myapp profiles: active: dev # 默认激活 dev 环境(可以通过启动参数覆盖)

application-dev.yml(开发环境)

server: port: 8080spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: dev_user password: dev_pwd

application-prod.yml(生产环境)

server: port: 8081spring: datasource: url: jdbc:mysql://prod-server:3306/prod_db username: prod_user password: prod_pwd

🔹 2. 启动时指定环境

方法 1:在 application.yml 设置

spring: profiles: active: dev # 或 test / prod

方法 2:命令行参数(推荐,灵活)

# 启动时指定 dev 环境java -jar myapp.jar --spring.profiles.active=dev# 启动时指定 prod 环境java -jar myapp.jar --spring.profiles.active=prod

方法 3:环境变量

export SPRING_PROFILES_ACTIVE=prodjava -jar myapp.jar

🔹 3. 使用 Profile 注解(可选)

如果你需要在代码里针对不同环境执行逻辑,可以用 @Profile 注解:

@Service@Profile(\"dev\")public class DevDataService implements DataService { @Override public String getData() { return \"开发环境数据\"; }}@Service@Profile(\"prod\")public class ProdDataService implements DataService { @Override public String getData() { return \"生产环境数据\"; }}

这样在 dev 环境只会加载 DevDataService,而生产环境只会加载 ProdDataService


🔹 4. 高级用法:组合 Profile

Spring Boot 支持 组合 Profile
例如在 application.yml 里:

spring: profiles: group: dev: [common, mysql-dev] prod: [common, mysql-prod]

这样当 spring.profiles.active=prod 时,会自动加载 application-common.ymlapplication-mysql-prod.yml


总结

  • application-{profile}.yml 管理不同环境的配置。
  • 启动时用 --spring.profiles.active=xxx 指定环境。
  • 特殊逻辑可以用 @Profile 注解隔离。
  • 生产推荐用 命令行参数/环境变量 指定,而不是写死在配置文件。