Contents

Spring Boot配置文件路径问题

Contents
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的环境变量是一样的,用户配置肯定会覆盖系统配置。