SpringBoot配置文件加载位置与优先级详解
作者:.Hypocritical.
想搞清楚SpringBoot配置文件加载顺序吗,本文详细讲解四个默认扫描位置、优先级覆盖规则、开发与部署场景,以及properties和yml的优先级差异,帮你避免配置混乱,轻松管理项目配置,需要的朋友可以参考下
一、默认配置文件扫描位置
SpringBoot 项目启动时,会自动扫描 四个固定位置 的 application.properties 或 application.yml / application.yaml 作为全局默认配置文件。
四个位置优先级从高到低:
file:./config/项目根目录下 config 文件夹(外置最高优先级)file:./项目根目录(Jar 包同级目录)classpath:/config/resources/config 目录classpath:/resources 根目录(日常开发默认使用)
二、核心加载机制(重点/必考)
SpringBoot 不会只加载一个位置,四个位置的配置文件会全部加载,遵循:
- 同名配置:高优先级覆盖低优先级
- 不同配置:全部保留,互补配置
简单理解:全覆盖、互补用、高优先。
三、目录结构直观图解
项目根目录/
├─ config/ # 1. file:./config/ 最高优先级
├─ application.yml # 2. file:./
└─ src
└─ main
└─ resources
├─ config/ # 3. classpath:/config/
└─ application.yml # 4. classpath:/ 日常开发四、开发与部署场景说明
1、日常开发(IDEA)
只使用:classpath:/
对应路径:src/main/resources/application.yaml
我们平时写的所有配置,都在这个文件中。
2、线上部署(外置配置)
file:./ 和 file:./config/ 属于外置配置。
打包后可以把配置文件放在 Jar 包同级目录或同级 config 文件夹,不修改代码即可替换线上配置,非常适合生产环境动态修改配置。
五、properties 与 yml 优先级
在同一个目录下:
properties 优先级 > yml / yaml
开发规范:一个项目只使用一种配置文件格式,禁止混用,避免配置覆盖混乱。
六、实战示例
在 classpath:/(resources根目录)配置项目访问根路径:
server:
servlet:
context-path: /boot3七、知识点总结
- SpringBoot 默认扫描 4 个固定配置位置
- 优先级:外置config > 项目根目录 > 内部config > 资源根目录
- 全部加载、互补配置、高优先级覆盖低优先级
- 开发用内部resources,上线可用外置配置解耦
到此这篇关于SpringBoot配置文件加载位置与优先级详解的文章就介绍到这了,更多相关SpringBoot配置文件加载位置与优先级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
