# 多Profile文件
在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置
如果application.yml中的配置和application-{profile}.yml相冲突时,application.yml中的配置会被覆盖掉。
# yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
# 激活指定profile
1、在配置文件中指定 spring.profiles.active=dev
2、命令行:
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
java -Xms2048m -Xmx2048m -jar xxx.jar --server.port=8088
可以直接在测试的时候,配置传入命令行参数
3、虚拟机参数;
-Dspring.profiles.active=dev
注意
参数的位置在命令行的位置
如果是在 app.jar 之前,加-Dxx=yy,如果是之后,则为--xx=yy
例如:
java -jar xxx.jar --server.port=8088
java -Dserver.port=8088 -jar xxx.jar
# maven
maven 在 pom.xml 中定义变量,然后在配置文件中引用的方式来指定 profile
spring:
profiles:
active: @spring.profiles.active@
如果想要获取mvn中设置的属性变量,需要使用@mvn变量名@(该方式为mvn的默认filter方式,如果想要更改方式,可以配置自定义filter),不能使用${mvn变量名},否则无法获取到
# 总结
如果是有maven定义运行参数,格式为
@xxx@,必须在pom.xml的properties中定义,否则不能启动Environment variables可以通过spring.profiles.active=prod这个样的格式定义VM options使用-Dspring.profiles.active=prod的格式来声明顺序为
@xxx@ < env(spring.profiles.active=prod) < VM(-Dspring.profiles.active=prod)外部定义变量,在
application.yml中使用${spring.profiles.active}的格式来读取
多种方式任意选择