Spring Boot 加载application.properties或application.yml配置文件的位置顺序。

我换一种更通俗易懂的方式,结合具体例子来解释 Spring Boot 加载application.properties或application.yml配置文件的位置顺序。
生活场景类比
想象你要找一本书,你有几个可能存放这本书的地方,你会按照一定顺序去这些地方找,直到找到为止。Spring Boot 找配置文件就和这个过程类似,它有几个 “指定的地方”,会按顺序依次查找。
具体查找位置及解释
1. file:./config/(当前工作目录下的config文件夹)
 
假设你正在家里的书房(当前工作目录)找书,你首先会去书房的书架柜子(config文件夹)里找。Spring Boot 也是这样,先在当前运行程序所在目录的config文件夹里找application.properties文件。如果没找到这个文件,它会接着看看有没有application.yml文件。要是这两个文件都没有,它就会去下一个 “地方” 找。
例子:假如你用命令行在C:\myproject目录下启动 Spring Boot 程序,Spring Boot 就会先去C:\myproject\config目录里找application.properties和application.yml文件。
2. file:./(当前工作目录)
 
如果在书房的书架柜子里没找到书,你就会在书房的桌面上、地上这些地方(当前工作目录)找找看。Spring Boot 也是,在当前工作目录的config文件夹里没找到配置文件后,就会在当前工作目录下找application.properties和application.yml文件。
例子:还是在C:\myproject目录下启动程序,现在 Spring Boot 会直接在C:\myproject目录里找配置文件。
3. classpath:/config/(类路径中的config目录)
 
要是在书房没找到书,你会去家里的图书馆(类路径)看看,先去图书馆的专门书架(config目录)找。对于 Spring Boot 来说,类路径一般就是项目编译后的资源目录,比如在 Maven 项目里就是target/classes目录。它会先去这个目录下的config子目录里找配置文件。
例子:在 Maven 项目里,会去target/classes/config目录里找application.properties和application.yml文件。
4. classpath:/(类路径的根目录)
 
如果在图书馆的专门书架没找到书,你就会在图书馆的普通书架(类路径根目录)找。Spring Boot 也是,在类路径的config目录里没找到配置文件后,就会在类路径的根目录里找。
例子:在 Maven 项目里,会去target/classes目录里找配置文件。
配置文件覆盖规则
如果在前面的位置找到了配置文件,里面的配置会覆盖后面位置找到的同名配置。就好像你在书房找到了一本新版的书,那这本书的内容就会覆盖旧版书的内容。
使用@Value注解
@Value注解可以将application.properties/application.yml文件中的配置信息注入/绑定到java对象的属性上。
语法格式:@Value("${key}")
代码测试一下:

编写一个配置类

test

运行结果:

如果在类的根路径下添加一个config目录,则优先找类路径中的config目录


测试工作目录

打成jar包



在工作目录再新建一个config目录


