[特殊字符] Spring Boot 静态资源默认映射规则详解

📌 Spring Boot 静态资源默认映射规则详解

这张图展示了 Spring Boot 静态资源的默认查找路径与优先级规则,是 Spring Boot 项目中静态资源(HTML、CSS、JS、图片等)访问的核心机制。


一、默认静态资源路径(按优先级从高到低)

Spring Boot 会按以下顺序依次查找静态资源,优先级从 (1) 到 (4) 依次递减:

  1. classpath:/META-INF/resources/
  2. classpath:/resources/
  3. classpath:/static/
  4. classpath:/public/

对应项目实际目录

这些路径对应 src/main/resources 下的子目录:

表格

配置路径 项目实际目录 说明
classpath:/META-INF/resources/ src/main/resources/META-INF/resources/ 优先级最高,通常用于第三方 Jar 包内置的静态资源
classpath:/resources/ src/main/resources/resources/ 优先级次高,可用于存放自定义静态资源
classpath:/static/ src/main/resources/static/ 最常用的默认目录,项目前端资源默认放这里
classpath:/public/ src/main/resources/public/ 优先级最低,需手动创建目录

二、核心规则说明

  1. 优先级生效逻辑 :当多个目录中存在同名文件 时,Spring Boot 会优先返回优先级更高目录 中的文件。例如:static/index.htmlresources/index.html 同时存在时,会返回 resources/index.html

  2. 访问方式 :所有目录下的静态资源,都可以直接通过根路径访问,无需写目录名。比如:static/js/main.js → 访问路径为 http://localhost:8080/js/main.js

  3. 默认配置来源 :该规则对应 Spring Boot 自动配置的 spring.resources.static-locations 属性,默认值为:

    properties

    复制代码
    spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

三、常见使用场景与最佳实践

1. 常规项目

  • 直接使用 classpath:/static/ 作为前端资源目录,符合 Spring Boot 约定,无需额外配置。
  • 示例:src/main/resources/static/index.html → 访问 http://localhost:8080/index.html

2. 自定义静态资源路径

如果需要修改默认路径,可在 application.properties/application.yml 中配置:

properties

复制代码
# 自定义静态资源路径(覆盖默认规则)
spring.resources.static-locations=classpath:/custom/,file:/D:/static-files/

3. 第三方 Jar 包资源

META-INF/resources/ 常用于第三方依赖(如 Spring Boot Starter)内置的静态资源,优先级最高可确保其优先加载。


四、避坑提示

  • ❌ 不要在多个目录下放同名文件,容易引发资源覆盖问题,排查困难。
  • ✅ 统一将项目静态资源放在 static/ 目录,保持结构清晰。
  • ✅ 如需自定义路径,优先通过配置文件修改,而非手动调整目录结构。

3. 最关键的坑(90% 的人都错在这里)

错误放法:

plaintext

复制代码
src/main/resources/index.html

这样访问不到!404!

正确放法:

plaintext

复制代码
src/main/resources/static/index.html
相关推荐
苦瓜小生2 小时前
【黑马点评学习笔记 | 实战篇 】| 7-达人探店
redis·笔记·后端·学习
AI-Ming2 小时前
注意力机制拓展-大模型知识点(程序员转行AI大模型学习)
人工智能·学习
ADHD多动联盟2 小时前
多动症孩子的运动干预是什么?主要有怎样的方法?
学习·学习方法·玩游戏
炽烈小老头2 小时前
【每天学习一点算法 2026/03/20】单词搜索
学习·算法
xiaoxiaoxiaolll2 小时前
最新《Nature Communications》:多元素共生策略为金属材料穿上“抗疲劳铠甲”
学习
weixin_458872612 小时前
东华复试OJ二刷复盘14
学习
元契2 小时前
英语基础语法学习0
学习
arvin_xiaoting2 小时前
OpenClaw学习总结_I_核心架构系列_Gateway架构详解
学习·架构·llm·gateway·ai-agent·飞书机器人·openclaw
421!2 小时前
ESP32学习笔记之UART
笔记·学习·嵌入式·esp32·通信