记录自己的一部分学习经历。

1.SpringBoot配置文件加载方式

  1.1 SpringBoot项目加载内部配置文件

    1.1.1 SpringBoot加载内部配置文件的顺序

      项目目录结构为标准的maven项目结构,如下图所示

      

spring boot 加载yml springboot如何加载_配置文件

 

      先写出结论吧:file:./config > file:./ > classpath:/config > classpath:/   

      具体可参考SpringBoot文档:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config   

      在项目中表示如下图所示:

      

spring boot 加载yml springboot如何加载_加载_02

       这里先验证下classpath:/config/application.yml和classpath:/application.yml的优先级

      config/application.yml

       

spring boot 加载yml springboot如何加载_spring boot 加载yml_03

      resources/application.yml

      

spring boot 加载yml springboot如何加载_spring boot 加载yml_04

      启动项目,控制台输出如下所示

      

spring boot 加载yml springboot如何加载_配置文件_05

      起作用的是config/application.yml,因为此优先级比较高。其他的优先级比较小伙伴可以自行测试。

     

  1.2 SpringBoot项目打成jar包之后加载外部的配置文件

    将项目打成jar包之后,可以通过命令行或者添加外部的目录来实现外部配置文件的加载。顺道一提,在项目的根路径config和根路径下的配置文件并不会被打包到jar中,即下图两个配置文件并不会打到jar包中。

      

spring boot 加载yml springboot如何加载_spring boot 加载yml_06

      解压jar包之中并没有配置文件

      

spring boot 加载yml springboot如何加载_配置文件_07

      回归正题,打成jar包之后,可以在jar包当前目录下建config,或者直接在jar包同目录下增加配置文件。

      

spring boot 加载yml springboot如何加载_加载_08

      jar包外存在两个配置文件(config目录下也有一个application.yml),项目启动时,优先读取config目录下的application.yml。但是,如果项目的resources/application.yml之中已经设置了spring.profiles.active,

      那么项目启动时直接读取resources下的application.yml配置文件,不会读取jar包外的配置文件。

      除此之外,也可以在命令行模式下通过spring.config.location增加自定义的配置文件存放目录,该命令设置的配置文件优先级高于别的(最高)。

      第一次写博文,如有错误和不足请各位大佬指正