记录自己的一部分学习经历。
1.SpringBoot配置文件加载方式
1.1 SpringBoot项目加载内部配置文件
1.1.1 SpringBoot加载内部配置文件的顺序
项目目录结构为标准的maven项目结构,如下图所示
先写出结论吧:file:./config > file:./ > classpath:/config > classpath:/
具体可参考SpringBoot文档:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config
在项目中表示如下图所示:
这里先验证下classpath:/config/application.yml和classpath:/application.yml的优先级
config/application.yml
resources/application.yml
启动项目,控制台输出如下所示
起作用的是config/application.yml,因为此优先级比较高。其他的优先级比较小伙伴可以自行测试。
1.2 SpringBoot项目打成jar包之后加载外部的配置文件
将项目打成jar包之后,可以通过命令行或者添加外部的目录来实现外部配置文件的加载。顺道一提,在项目的根路径config和根路径下的配置文件并不会被打包到jar中,即下图两个配置文件并不会打到jar包中。
解压jar包之中并没有配置文件
回归正题,打成jar包之后,可以在jar包当前目录下建config,或者直接在jar包同目录下增加配置文件。
jar包外存在两个配置文件(config目录下也有一个application.yml),项目启动时,优先读取config目录下的application.yml。但是,如果项目的resources/application.yml之中已经设置了spring.profiles.active,
那么项目启动时直接读取resources下的application.yml配置文件,不会读取jar包外的配置文件。
除此之外,也可以在命令行模式下通过spring.config.location增加自定义的配置文件存放目录,该命令设置的配置文件优先级高于别的(最高)。
第一次写博文,如有错误和不足请各位大佬指正