1
|
https://docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/html/boot-features-external-config.html
|
Spring boot默认的配置文件application.properties可以直接外置,jar在运行时自动读取,读取顺序为:
1.jar包内classpath:application.properties
2.jar包同级目录application.properties
3.jar包同级目录config/application.properties
最后读取的生效,所以修改同级目录的配置文件肯定能生效,当然直接传送启动变量也是不错的选择。
1
2
|
java -Dspring.profiles.active=dev -Dserver.port=8080 -jar test.jar
java -jar test.jar --spring.profiles.active=dev --server.port=8080
|
至于yaml,yml和properties 的读取顺序,看spring-boot-starter-parent的pom文件就可以知道,最后读取的生效。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.yaml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
|
好多人说读取的优先级其实是有歧义的,正确的理解应该是读取的顺序,读取的越晚,会覆盖之前的配置,这个和Linux的环境变量是一样的,用户配置肯定会覆盖系统配置。