SpringBoot版本:2.1.1.RELEASE
Profile是Spring对不同环境提供不同配置的支持,可以通过激活、指定参数等方式快速切换环境。
一、多Profile文件
我们在编写主配置文件的时候,可以是application-{profile}.yml/properties 的格式,如果不指定环境,默认是加载application.properties/yml 中的配置文件。
application-dev.yml 文件
server:
port: 8082
application-prod.yml 文件
server:
port: 8083
application.yml 文件
server:
port: 8081
以上是我编写的三个配置文件,当直接启动项目时,默认加载的是application.yml 配置文件中的配置,如下图:
那么,如何让其它的配置文件生效呢,我们可以在主配置文件 application.yml 中加上一行配置,如下:
spring:
profiles:
# 也可以指定成 prod
active: dev
下面我们再次启动项目,可以看到项目运行时就加载了application-dev.yml 配置文件。
二、YAML支持多文档块方式
我们可以在主配置文件中加上 - - - 来划分文档块,通过配置 spring.profiles=xxx 来指定当前文档快名称,代码如下:
server:
port: 8081
spring:
profiles:
active: test1
---
server:
port: 10086
spring:
profiles: test1
---
server:
port: 10087
spring:
profiles: test2
此时,我们运行项目,可以看到项目加载的就是命名为 test1 文档块的配置文件:
三、激活指定的Profile
激活指定的配置文件有多种方式:
A. 在配置文件中指定:spring.profiles.active=dev/prod/…
B.通过命令行参数指定:java -jar springboot-study.jar --spring.profiles.active=dev/prod/…
C.通过虚拟机参数指定:-Dsping.profiles.active=dev/prod/…
通过虚拟机参数指定方式如下图:
再次启动项目,不论主配置文件中指定的是何种环境,都将以虚拟机中指定的环境为准,结果如下图:
以上这些多Profile的方式给我们的开发和测试带来了极大的便利,可以快速支持多种环境的配置切换!