1.引言
当在多配置文件中,需要切换配置文件时,通常的做法都是修改激活的文件名称,而spring.profiles.active=@profiles.active@ 是配合 maven profile
进行选择不同配置文件进行启动,可以避免修改文件,而在maven打包是指定使用哪个配置文件。
2.实战演练
2.1环境准备
首先使用IDEA创建一个SpringBoot的项目
2.2配置pom
假设目前有三个环境dev、test和prod,那么需要在pom.xml进行配置:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> <profiles> <profile> <!-- 本地开发环境 --> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <!-- 是否默认激活 --> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- 测试环境 --> <id>test</id> <properties> <profiles.active>test</profiles.active> </properties> <activation> <activeByDefault>false</activeByDefault> </activation> </profile> <profile> <!-- 生产环境 --> <id>prod</id> <properties> <profiles.active>prod</profiles.active> </properties> <activation> <activeByDefault>false</activeByDefault> </activation> </profile> </profiles>
上述默认使用dev配置。配置后需要点击刷新按钮来刷新maven,然后会看到如下的几种选择:
2.3创建配置文件(properties类型)
首先创建application.properties文件,其内容为:
spring.profiles.active=@profiles.active@
创建application-dev.properties:
server.port=8888
创建application-test.properties:
server.port=9999
创建application-prod.properties:
server.port=8080
启动项目,查看控制台启动日志,启动端口是8888,然后关闭。
在Propfiles中勾选test,取消勾选dev,再启动项目,此时启动端口是9999,其他环境同理,打包也是类似的方式。
注意:若切换时还是使用上一次环境或报错,那么需要刷新一下maven再重启项目。
若是maven命令打包,其方式如下:
mvn clean package -P prod
使用-P指定使用的配置文件即可。无论是自动打包还是使用maven命令打包,最终的环境名称会配置给application.properties中,即:
spring.profiles.active=prod //这里假设是prod环境打包的
也就是说,免去了频繁修改配置文件的操作。
2.4创建配置文件(yml类型)
当然还有另一种yml方式配置,目前在使用时发现有问题,待更新!