最近在优化配置代码的时候遇到了一个问题,配置的多套环境参数始终无法正确加载,经过多次尝试和查阅资料得出结论如下:
1. 使用application.yml一个文件可以配置多套环境参数,每套环境分割使用“---”。使用spring.profiles来区分环境。使用spring.profiles.active来指定使用那套环境参数。具体如下:
server:
port: 9860
tomcat:
max-threads: 10
# 日志配置 为空为项目跟目录下的logs 或者指定已经存在的目录
#log:
# path:
spring:
profiles:
active: sit
resources:
chain:
cache: false
cache:
type: NONE
management:
security:
enabled: false
startCfg:
env: default
---
########################## SIT环境配置 #####################################
server:
port: 9850
spring:
profiles: sit
startCfg:
env: sit
2. 使用application-xxx.yml多个文件配置多套环境参数,每套环境使用后缀来区分(和spring.profiles作用相同, 文件中spring.profiles属性可以不配置,配置必须和文件名的环境参数保持一致,否则这套配置参数无效)。使用spring.profiles.active来指定使用那套环境参数。具体如下:
application-dev.yml
########################## 开发环境配置 #####################################
server:
port: 9870
spring:
profiles: dev #可以不配置,或者和文件名的环境参数保持一致,否则这套配置参数无效
startCfg:
env: dev
测试代码:
@RestController
@RequestMapping("test")
public class BatchController {
@Value("${startCfg.env}")
String env;
@RequestMapping("/env")
public String getEnv(){
return "this env is "+env;
}
}