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

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

http://www.xdnf.cn/news/4008.html

相关文章:

  • Qwen3 性价比新王 Qwen3-30B-A3B 本地私有化部署,可灵活切换思考模式
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(九)
  • Qml组件之AnimatedImage
  • 牛客1018逆序数-归并排序
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化
  • 【PaaS与AI融合】MLOps平台的架构设计
  • DHCP服务器配置
  • PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
  • HTTP协议
  • 如何判断node节点是否启用cgroup?
  • 深入浅出数据库规范化的三大范式
  • 网络传输中字节序
  • 线程局部存储----TLS
  • seaborn
  • suna工具调用可视化界面实现原理分析(二)
  • 黑马点评day02(缓存)
  • 五一の自言自语 2025/5/5
  • 基于python的哈希查表搜索特定文件
  • 【C/C++】各种概念联系及辨析
  • Cadence高速系统设计流程及工具使用
  • [C++] 小游戏 决战苍穹
  • 《Java 高并发程序设计》笔记
  • NSOperation深入解析:从使用到底层原理
  • 千锋教育Ansible自动化运维实战教程从入门到精通
  • 基于windows安装MySQL8.0.40
  • 2025 年最新树莓派 Pico 连接 ESP8266 模块实现 WiFi 通信、搭建 TCP 服务器实现数据交互详细教程
  • 【多线程】九、常见的锁 读者写者问题
  • 「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例
  • 【爬虫】微博热搜机
  • 网络原理 TCP/IP