【SpringBoot】配置文件加载位置与优先级详解

一、默认配置文件扫描位置

SpringBoot 项目启动时,会自动扫描 四个固定位置 的 application.properties 或 application.yml / application.yaml 作为全局默认配置文件。

四个位置优先级从高到低:

  1. file:./config/ 项目根目录下 config 文件夹(外置最高优先级)

  2. file:./   项目根目录(Jar 包同级目录)

  3. classpath:/config/ resources/config 目录

  4. 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,上线可用外置配置解耦

相关推荐
计算机毕设定制辅导-无忧学长18 分钟前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
文丑颜不良啊2 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼2 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
wo_jack2 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
量化分析码农3 小时前
【Python量化波动率实战 02】波动率会传染:EWMA 指数加权给近期行情更大话语权
后端
文丑颜不良啊4 小时前
LeetCode2161~2180题目解析
java·leetcode
GISer_Jing4 小时前
如何学习Agent
后端·langchain
JWASX5 小时前
【Go】map 源码解析 - group
后端·golang·map·源码分析
文丑颜不良啊5 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发6 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview