java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Boot 多环境配置

Spring Boot 多环境配置Maven Profile vs 启动参数注入深入解析

作者:tlnshuju

本文介绍了在Java项目开发和部署中使用多环境配置的方法,比较了两种主要方式:MavenProfile方式和启动参数方式,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

一、背景说明

在项目开发和部署过程中,我们通常会维护多套配置文件:

Spring Boot 天生支持多环境配置,但不同团队在使用上有两种主要方式:

这两者目标一致但理念不同

⚙️ 二、核心区别一览表

对比维度Maven Profile(构建时)启动参数注入(运行时)
配置切换时机打包阶段确定启动阶段动态指定
构建产物每个环境一个 jar一个通用 jar
命令方式mvn clean package -Pprodjava -jar app.jar --spring.profiles.active=prod
配置文件数量每个环境一个 jar 内部配置不同所有配置文件打包进一个 jar
修改环境成本高(需重新打包)低(重启命令即可)
CI/CD 兼容度一般极佳
本地开发体验稍繁琐方便(命令切换)
适用部署场景传统服务器、手动运维Docker、K8s、Jenkins 等现代环境
企业使用比例(经验值)约30%约70%(主流)

三、方案一:Maven Profile 多环境打包

1. 原理简介

Maven 的 <profiles> 标签允许在 打包阶段 注入不同属性值。
结合 Spring Boot 的占位符替换机制(@spring.profiles.active@),
可以让打出来的 jar 在内部就写死对应环境。

这种方式的核心理念是:

“一个环境,一个包” —— 打包即部署。

2. pom.xml 配置示例

<profiles>
  <profile>
  <id>dev</id>
    <activation>
    <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <spring.profiles.active>dev</spring.profiles.active>
    </properties>
  </profile>
  <profile>
  <id>test</id>
    <properties>
    <spring.profiles.active>test</spring.profiles.active>
    </properties>
  </profile>
  <profile>
  <id>prod</id>
    <properties>
    <spring.profiles.active>prod</spring.profiles.active>
    </properties>
  </profile>
</profiles>

3. application.yml

spring:
profiles:
active: @spring.profiles.active@

打包时执行:

mvn clean package -Pprod

将生成的配置内容:

spring:
profiles:
active: prod

⚙️ 4. 打包命令

mvn clean package -Pdev
mvn clean package -Ptest
mvn clean package -Pprod

⚡ 四、方案二:启动参数注入(推荐)

1. 原理简介

Spring Boot 在运行时根据 spring.profiles.active 参数加载对应配置文件。
这种方式无需重新打包,只要调整命令即可切换环境。

“一个包,多环境复用”。

️ 2. 配置文件结构

src/main/resources/
├── application.yml
├── application-dev.yml
├── application-test.yml
└── application-prod.yml

3. 启动命令示例

java -jar app.jar --spring.profiles.active=dev
java -jar app.jar --spring.profiles.active=test
java -jar app.jar --spring.profiles.active=prod

4. 环境变量方式(生产推荐)

export SPRING_PROFILES_ACTIVE=prod
java -jar app.jar

Spring Boot 自动读取环境变量配置。

五、选择建议

场景推荐方案理由
开发环境启动参数注入切换快速
测试环境启动参数注入无需重打包
生产环境环境变量或 Maven Profile稳定可控
Docker/K8s 部署启动参数注入最佳实践

六、混合写法(兼容两者)

spring:
profiles:
active: @spring.profiles.active@

启动命令可覆盖:

java -jar app.jar --spring.profiles.active=prod

✅ 七、总结

Maven Profile 是“打包时选环境”,Spring Profile 是“运行时选环境”。在现代 DevOps 或容器化部署中,更推荐使用启动参数注入方式。

到此这篇关于java多线程的文章就介绍到这了,更多相关java多线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文