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

相关推荐
JAVA面经实录9171 小时前
RabbitMQ 完整面试题答案
java·rabbitmq·java-rabbitmq
xcl09258 小时前
商超智能运营实战:数据驱动提升门店效率与体验指南
java·mfc·宠物
码事漫谈9 小时前
勿删
后端
Flynt10 小时前
OpenJDK禁AI代码半年了,现在执行得怎么样?答案是:全靠自觉
java·开源·ai编程
IT_陈寒13 小时前
用了Proxy才发现以前的JavaScript白写了
前端·人工智能·后端
唐青枫14 小时前
别把 ArrayList 当成会自动管理内存的 List:Zig 动态数组从入门到实战
后端
鸿蒙开发14 小时前
我为 HarmonyOS 做了一个统一大模型 SDK:@hmkit/ai 正式开源
后端
猪是念来过倒14 小时前
Semaphore 与 RateLimiter:并发控制双雄详解
后端
掘金者阿豪14 小时前
异构数据同步最怕什么?不是同步慢,而是数据对不上
后端