当前位置: 首页 > news >正文

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

我换一种更通俗易懂的方式,结合具体例子来解释 Spring Boot 加载application.propertiesapplication.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.propertiesapplication.yml文件。

2. file:./(当前工作目录)

如果在书房的书架柜子里没找到书,你就会在书房的桌面上、地上这些地方(当前工作目录)找找看。Spring Boot 也是,在当前工作目录的config文件夹里没找到配置文件后,就会在当前工作目录下找application.propertiesapplication.yml文件。

例子:还是在C:\myproject目录下启动程序,现在 Spring Boot 会直接在C:\myproject目录里找配置文件。

3. classpath:/config/(类路径中的config目录)

要是在书房没找到书,你会去家里的图书馆(类路径)看看,先去图书馆的专门书架(config目录)找。对于 Spring Boot 来说,类路径一般就是项目编译后的资源目录,比如在 Maven 项目里就是target/classes目录。它会先去这个目录下的config子目录里找配置文件。

例子:在 Maven 项目里,会去target/classes/config目录里找application.propertiesapplication.yml文件。

4. classpath:/(类路径的根目录)

如果在图书馆的专门书架没找到书,你就会在图书馆的普通书架(类路径根目录)找。Spring Boot 也是,在类路径的config目录里没找到配置文件后,就会在类路径的根目录里找。

例子:在 Maven 项目里,会去target/classes目录里找配置文件。

配置文件覆盖规则

如果在前面的位置找到了配置文件,里面的配置会覆盖后面位置找到的同名配置。就好像你在书房找到了一本新版的书,那这本书的内容就会覆盖旧版书的内容。

使用@Value注解

@Value注解可以将application.properties/application.yml文件中的配置信息注入/绑定到java对象的属性上。

语法格式:@Value("${key}")

代码测试一下:

编写一个配置类

test

运行结果:

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



测试工作目录

打成jar包


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

相关文章:

  • Nacos源码—3.Nacos集群高可用分析一
  • Nuxt3还能用吗?
  • Jetpack Compose 响应式布局实战:BoxWithConstraints 完全指南
  • Java IO流核心处理方式详解
  • 【Bootstrap V4系列】学习入门教程之 组件-卡片(Card)
  • 因为gromacs必须安装cuda(系统自带的NVIDIA驱动不行),这里介绍下如何安装cuda
  • SpringMVC——第6章:RESTFul编程风格
  • 51c大模型~合集124
  • 【从零开始学习微服务 | 第一篇】单体项目到微服务拆分实践
  • 深入理解 Bash 中的 $‘...‘ 字符串语法糖
  • DXFViewer进行中 : ->封装OpenGL -> 解析DXF直线
  • Compose 中使用 WebView
  • Unity:输入系统(Input System)与持续检测键盘按键(Input.GetKey)
  • win10开了移动热点,手机无法连接,解决办法(chatgpt版)
  • socket,http
  • 基于python的哈希查表搜索特定文件
  • 查看Ubuntu版本
  • (41)VTK C++开发示例 ---qt使用vtk最小示例
  • 科创大赛——知识点复习【c++】——第一篇
  • Flink流水线任务在线演示
  • 从陈毅杯到小应氏杯,五一长假上海掀起围棋热
  • 甘肃临夏州政协委员马全成涉嫌诈骗罪,被撤销政协委员资格
  • 浙江医生举报3岁男童疑遭生父虐待,妇联:已跟爷爷奶奶回家
  • 热点问答|澳大利亚联邦选举结果有何看点
  • 消费持续升温,这个“五一”假期有何新亮点?
  • 人民日报评论员:因势利导对经济布局进行调整优化