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目录