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

相关推荐
m0_5873830038 分钟前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·1 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
代码不停2 小时前
自动化测试(java)
java·开发语言·selenium·自动化
行百里er2 小时前
Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
redis·后端
高频因子挖掘机3 小时前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
鬼手点金4 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
孟健4 小时前
从5000亿Token到83%字节匹配:AI逆向工程与重构的工程闭环实践
后端·架构·ai编程
paopaokaka_luck5 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
SL_staff5 小时前
JVS混合架构实践:能力引擎+动态模型如何支撑企业级可持续交付
spring boot·低代码·全栈
码事漫谈5 小时前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端