Spring Boot基本配置之全局配置文件优先级

  前两篇介绍的application配置文件,即为spring boot全局配置文件。那么spring boot加载配置文件的时候,怎么确定加载哪个目录下哪个文件呢?

  spring boot默认的配置文件名为application.properties或application.yaml/application.yml。默认配置文件可放置如下四个位置:

            

   优先级顺序如图中所示,即:

          

   对于同目录下,存在后缀不同配置文件,以哪个为准呢?2.4.0版本以前:properties>yaml,以后yaml>properties。通过设置spring.config.use-legacy-processing可以修改同目录不同后缀配置文件是否生效。  

  以上是对于默认的配置文件名,那对于自定义配置文件名如何正确有效加载呢?实际上使用Spring Boot时,其通过自动配置机制在系统启动时就自动创建了PropertyPlaceHolderConfigurer的Bean(参考Spring EL和资源调用中基于配置文件加载资源),并默认从class目录下的配置文件中加载作为系统的默认配置。

  Spring中有个机制就是在项目中定义多个profile配置文件,文件命令格式为application-{profile}.propertyes/yml(Spring配置之常用配置概述中关于@profile的 使用)。当启动不同的环境时,Spring Boot可以从可行的配置文件中加载并负责默认的配置。比如,可以为开发环境定义applicaiton-dev.properties,为发布环境创建application-stage.properties文件;在启动时可以通过参数spring.profile/spring.config.name来指定所要启动的环境即可。

  假设配置文件名为myproject.conf,可以通过如下方式指定配置文件名称:

           java -jar XXX.jar --spring.config.name=myproject.conf。

  同时也可以指定其他位置的配置文件生效: java -jar XXX.jar --spring.config.location=projectlocation。

  

posted on 2021-04-10 10:25  池塘里洗澡的鸭子  阅读(623)  评论(0编辑  收藏  举报