springBoot 启动指定配置文件环境理论上是有多种方案的,一般都是结合我们的实际业务选择不同的方案,比如,有pom.xml文件指定、maven命令行指定、配置文件指定、启动jar包时指定等方案,今天我们一一分享一下,以供参考:
1、pom文件配置方案
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<!--配置默认的配置文件,idea开发右侧的maven-install中,profiles默认选中dev-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
<!-- <activation>
<activeByDefault>true</activeByDefault>
</activation>-->
</profile>
<profile>
<!-- 生产环境 -->
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
</properties>
<!-- <activation>
<activeByDefault>true</activeByDefault>
</activation>-->
</profile>
</profiles>
对应的配置文件举例:
application-dev.yml
application-test.yml
application-pro.yml
也可以是目录配置方式
此处配置三种环境,用哪个环境就把那里设置为true,然后clean、install 打包后设置好了。
另外此时在配置文件添加另外一个配置也行,指定到pom文件:
#环境配置开发时使用
spring.profiles.active=@profiles.active@
2、maven命令行打包指定
mvn clean package -Pdev
mvn clean package -Ptest
mvn clean package -Ppro
打包指定相应的配置文件。
3、配置文件指定
一般 application.properties 文件中指定环境
spring.profiles.active=test
指定下面的几个文件
4、启动jar包时指定
nohup java -jar demo-server.jar --spring.profiles.active = test > log.file 2>&1 &
直接启动指定test环境
5、虚拟机指定:
-Dspring.profiles.active=dev
6、使用时注意一下几点,配置文件加载顺序:
1)、同级情况下,application.properties文件优先级大于application.yml,前者会覆盖后者;
2)、springboot的默认加载路径有5个,分别是classpath:/、classpath:/config/、项目根路径、项目根路径/config/*/、项目根路径/config/,会从这5个路径下加载application.properties或application.yml;
3)、5个默认的加载路径的优先级为:项目根路径下的config > 项目根路径下的config/*/ > 项目根路径 > classpath:/config > classpath:/,前者会覆盖后者
7、综上6所述:优先级如下
1):根目录/config/application.properties
2):根目录/config/application.yml
3):根目录/application.properties
4):根目录/application.yml
5):classpath目录/config/application.properties
6):classpath目录/config/application.yml
7):classpath目录/application.properties
8):classpath目录/application.yml
到此,springXXX框架指定配置文件及加载的优先级问题分享完毕,大家详细测试一下,定会惊喜多多。