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

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

SpringBoot 项目启动时,会自动扫描 四个固定位置application.propertiesapplication.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,上线可用外置配置解耦

相关推荐
子兮曰15 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!15 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰16 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里16 小时前
java中的继承和多态的区别
java
小羊没烦恼!16 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝16 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕16 小时前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码16 小时前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖16 小时前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时17 小时前
01-06-A-JVM排查实战详解
java·jvm