Springboot的默认配置文件加载路径及优先级

Springboot的默认配置文件加载路径有5种,优先级高于外部扩展配置(Externalized Configuration)。


也就是说:springboot配置文件的优先级为:

  • T0:springboot默认的5种配置文件加载路径。

  • T1:18种外部扩展配置。

其中,18种外部扩展配置顺序参见上面那个官方链接。


默认的5种配置文件加载路径如下:


首先一个文件名称通用原则:

在相同文件夹下如果有application.properties和application.yml两个文件,那么application.properties文件会覆盖application.yml文件,生效的是application.properties文件。


其次路径优先级原则:

* {@link EnvironmentPostProcessor} that configures the context environment by loading
 * properties from well known file locations. By default properties will be loaded from
 * 'application.properties' and/or 'application.yml' files in the following locations:
 * <ul>
 * <li>file:./config/</li>
 * <li>file:./config/{@literal *}/</li>
 * <li>file:./</li>
 * <li>classpath:config/</li>
 * <li>classpath:</li>
 * </ul>
// Note the order is from least to most specific (last one wins)
private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/";

以执行java -jar命令的目录为“根目录”。注意不一定是jar所在的目录。

说明如下:

file:./config/        进程根目录下的config目录

file:./config/*/    上面的子目录

file:./                 进程根目录

classpath:config/   classpath下的config/

classpath:        classpath下


注意,再次强调,不能用 外部扩展配置 来代替 springboot的默认配置。例如

--spring.config.location=optional:classpath:/default.properties,optional:classpath:/override.properties
--spring.config.additional-location=file:/xxx/

这些配置都无法代替springboot的默认配置优先级,有些高优先级的配置加载,例如nacos的启动配置

bootstrap.yml内如如下:

### ------------nacos config center
spring.cloud.nacos.config:
   enabled: true
   server-addr: ${spring.cloud.nacos.discovery.server-addr}
   username: ${spring.cloud.nacos.discovery.username}
   password: ${spring.cloud.nacos.discovery.password}
   namespace: ${DEPLOY_ENV}
   group: ${spring.application.name}
   name: application
   file-extension: yml

就必须放在默认配置路径下,放在外部扩展配置下是无效的


© 2009-2020 Zollty.com 版权所有。渝ICP备20008982号