什么是 profiles 这里就不赘述了,profiles 主要用来实现动态切换项目环境,如:开发环境 dev,测试环境 test 以及正式环境 prod,下面将介绍四种方式去激活 profiles。
注意:激活的 profiles 需要在项目的 resources 目录创建对应的配置文件,配置文件名称格式为 application-{profile}.yml。
该方式是一种外部配置的方式,在执行 java -jar 命令时可以通过 –spring.profiles.active=dev 的方式进行激活指定的 profiles 列表。例如:
java -jar my-v1.0.jar --spring.profiles.active=dev该方式也是一种外部配置的方式,在执行 java -jar 命令时可以通过 -Dspring.profiles.active=dev 的方式进行激活指定的 profiles 列表。例如:
java -Dspring.profiles.active=dev -jar my-v1.0.jar编辑环境变量配置文件 /etc/profile,添加名为 SPRING_PROFILES_ACTIVE 的环境变量,如下所示:
export SPRING_PROFILES_ACTIVE=dev新建一个名为 SPRING_PROFILES_ACTIVE 的系统环境变量,设置变量的值为 dev 即可。
注意:该方式适用于系统下所部署统一环境的 Spring Boot 应用程序,如统一部署的都是 prod 环境的应用程序。
该方式是最常用的方式,不过灵活性不强,局限性比较大,不建议使用这种方式来激活配置文件。
我们只需要在 application.yml 配置文件添加配置即可,使用方式如下所示:
spring:
profiles:
# 激活 profiles
active: dev注意,配置文件方式通常结合 Maven 进行使用,在 Maven 的 pom.xml 文件中定义 profiles,如下:
<profiles>
<profile>
<id>prod</id>
<properties>
<active_profile>prod</active_profile>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<active_profile>test</active_profile>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<active_profile>dev</active_profile>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>然后,在 Spring Boot 的配置文件中直接引用上面定义的属性名 active_profile,当进行 Maven 编译时会自动将属性名替换成对应的值,例如:
spring:
profiles:
# 激活 profiles
active: @active_profile@命令行方式(最高) > Java系统属性方式 > 系统变量方式 > 配置文件方式(最低)
如果需要激活多个 profile 可以使用逗号隔开,如:
java -jar my-v1.0.jar --spring.profiles.active=dev,dev2