一、不同环境使用不同配置文件
复制多份配置文件,修改不同的端口,在application.yml文件中添加具体启动的配置文件,可以看到不同的启动端口,使用maven的打包命令,将项目打入jar包:
<!-- 跳打包test文件报错--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
如果打包出错,在xml中配置跳过test测试,进入到jar包目录,使用java -jar 启动项目
默认以开发环境8810端口启动,可以在启动时指定配置文件:
java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
项目以888端口启动
二、在idea中配置启动文件:
VM options设置启动参数 -Dspring.profiles.active=prod
Program arguments设置 --spring.profiles.active=prod
Active Profile 设置 prod
三个参数不能同时设置
2、配置文件的优先级:
外部大于内部,特指大于泛指
下面特指的文件优先级更高
三、文件优先级说明
spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/ –file:./ –classpath:/config/ –classpath:/
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。
SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。
我们也可以通过配置spring.config.location来改变默认配置
java -jar Xxx-version.jar --spring.config.location=D:/application.properties
配置加载顺序
SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
配置加载顺序
SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
- 命令行参数
- 来自java:comp/env的JNDI属性
- Java系统属性(System.getProperties())
- 操作系统环境变量
- RandomValuePropertySource配置的random.*属性值
- jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
- jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
- jar包外部的application.properties或application.yml(不带spring.profile)配置文件
- jar包内部的application.properties或application.yml(不带spring.profile)配置文件
- @Configuration注解类上的@PropertySource
- 通过SpringApplication.setDefaultProperties指定的默认属性
原文地址:https://www.cnblogs.com/liweiweicode/p/11824895.html