springboot2.0入门(八)-- profile启动文件配置
一、不同环境使用不同配置文件
将application.yml文件拷贝三份,在文件末尾分别对应开发/生产/测试,dev/prod/test/文件夹,其中application.yml 中默认激活开发环境
修改不同配置文件的启动端口,在application.yml文件中添加具体启动的配置文件,可以看到不同的启动端口,使用maven的打包命令,将项目打入jar包:
如果打包出错,在xml中配置跳过test测试,进入到jar包目录,使用java -jar 启动项目
<!-- 跳打包test文件报错--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
默认以开发环境8810端口启动,可以在启动时指定配置文件:
改用生产环境的配置文件:
java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
可以发现项目以8888端口启动
二、在idea中配置启动文件:
VM options设置启动参数 -Dspring.profiles.active=prod
Program arguments设置 --spring.profiles.active=prod
Active Profile 设置 prod
需要注意的是,上面三种方式,选一种即可:
2、配置文件的优先级:
外部大于内部,特指大于泛指
下面带有dev\prod\test特指的文件优先级更高
三、文件优先级说明
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也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
- 命令行参数
- 来自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指定的默认属性