application.properties多环境构建时指定对应环境变量的规则在哪配置
环境变量自动适配方案
你可以根据你的技术栈选择以下任意一种实现方式:
方案1:Spring Boot 原生Profile机制(最常用)
这是Spring Boot自带的环境区分能力,无需额外引入工具:
- 拆分配置文件,在resources目录下新增两个环境专属配置:
- 开发环境:
application-dev.properties,写入专属配置spring.datasource.username=${DB.USER.DEV} - 生产环境:
application-prod.properties,写入专属配置spring.datasource.username=${DB.USER.PROD}
- 开发环境:
- 公共配置统一放在原来的
application.properties中 - 启动应用时指定激活的环境即可自动加载对应配置:
- 开发环境启动命令追加参数:
--spring.profiles.active=dev - 生产环境启动命令追加参数:
--spring.profiles.active=prod
- 开发环境启动命令追加参数:
方案2:构建工具动态替换(构建阶段就固定配置值)
如果你希望在打包构建的时候就把对应值写入配置文件,不用在启动时指定,可以用Maven/Gradle的Profile能力,以Maven为例:
- 在
pom.xml中配置两个构建Profile:
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <db.user>${DB.USER.DEV}</db.user> </properties> </profile> <profile> <id>prod</id> <properties> <db.user>${DB.USER.PROD}</db.user> </properties> </profile> </profiles>
- 开启资源过滤,在pom的build配置中添加:
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
- 把
application.properties中的对应配置改成spring.datasource.username=@db.user@ - 构建时指定Profile即可自动替换:
- 开发环境构建命令:
mvn clean package -Pdev - 生产环境构建命令:
mvn clean package -Pprod
- 开发环境构建命令:
方案3:CI/CD 流水线注入(无需修改代码配置)
如果你用Git自带的CI/CD能力(GitHub Actions/GitLab CI等),可以直接在流水线中统一处理:
- 在
application.properties中统一写通用占位符:spring.datasource.username=${DB_USER} - 配置CI流水线的dev构建阶段,设置环境变量
DB_USER=${DB.USER.DEV} - 配置CI流水线的prod构建阶段,设置环境变量
DB_USER=${DB.USER.PROD} - 不同环境构建时会自动注入对应的值,无需修改项目代码配置
注意:Spring Boot对环境变量的读取有默认规则,会自动转换点号为下划线、忽略大小写,如果遇到变量读取失败的情况,可把Git中存储的环境变量名改为下划线格式(如
DB_USER_DEV),兼容性更好。
内容的提问来源于stack exchange,提问作者Kerk
相关产品推荐
相关产品推荐

