背景
有三个配置文件(.properties文件和.yml文件一样道理嘛),分别是:
application.properties(默认配置)文件内容:server.port=8080
application-dev.properties(开发环境)文件:server.port=8082
application-prod.properties(生产环境)文件:server.port=8081
方式一、使用Springboot自带的功能实现
步骤:
1、给application.properties增加属性配置,默认附加上application-dev.properties配置文件
spring.profiles.active=dev
如果是yml,配置就是
spring:
profiles:
active: dev
修改后的application.properties文件内容
spring.profiles.active=dev
server.port=8080
2、在IDE中运行时如何指定配置文件
在Active profiles中设置相应的配置即可:
设置为dev,表示使用application.properties + application-dev.properties
设置为prod,表示使用application.properties + application-prod.properties
如果application.properties和application-dev.properties中有重复的配置(比如我这里都配置了server.port),application-dev.properties中的配置会覆盖掉application.properties得配置,比如我在IDE中指定使用dev配置文件运行时的结果:
3、打包后运行时如何指定配置文件
#注意,这里打包的话,就直接mvn clean package -Dmaven.test.skip=true 就行,不需要指定-P参数(因为我们没有用maven来管理profile)
打包完成之后,我们使用java -jar方式执行文件时,可以通过指定 --spring.profiles.active=prod来设置使用prod配置文件:
#指定配置文件为application.properties+application-prod.properties
java -jar .\springboot-study-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
#指定配置文件为application.properties+application-dev.properties
java -jar .\springboot-study-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
#不加--spring.profiles.active的话,指定配置文件为application.properties+
#application-dev.properties(我们的默认附加是dev)
java -jar .\springboot-study-0.0.1-SNAPSHOT.jar
使用该方式的优点:
打包之后可以动态的指定加载哪个配置文件(--spring.profiles.active),因为所有的配置文件都会被打包进来