什么是 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