在SpringBoot中,多环节的配置文件名基于application-{profile}.properties的格式,其中{profile}对应环境标识,比如:
- application-daily.properties 测试环境
- application-gray.properties 灰度环境
- application-production.properties 线上环境
在启动时具体加载的文件由spring.profiles.active属性来设置。
该值可以在applicaton.properties文件中设置,也可以在启动命令上指定。
执行java -jar xxx.jar,使用默认的开发环境(local)
执行java -jar xxx.jar --spring.profiles.active=daily,使用测试环境的配置(daily)
执行java -jar xxx.jar --spring.profiles.active=production,使用生产环境的配置(production)
除了application.properties文件的配置之外,也有一些中间件依赖的配置文件,这些文件一般有限定的文件名,固定的配置参数等。
这些文件要分环境打包的话,有一种策略是分别维护多套环境的配置文件,在打包时做相应的替换处理。
项目基于gradle时,配置如下:
task copyEnv(type: Copy) { from "src/main/env/" + System.properties['env'] into "build/resources/main" } bootJar.dependsOn copyEnv
在编译时,命令如下:
gradle bootJar -Denv=daily
配置文件路径如上图,不同的环境维护相应的路径即可。