一、默认配置文件扫描位置
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根目录)配置项目访问根路径:
java
server:
servlet:
context-path: /boot3
七、知识点总结
-
SpringBoot 默认扫描 4 个固定配置位置
-
优先级:外置config > 项目根目录 > 内部config > 资源根目录
-
全部加载、互补配置、高优先级覆盖低优先级
-
开发用内部resources,上线可用外置配置解耦