Spring Boot静态资源访问顺序

在 Spring Boot 中,static 和 public 目录都用于存放静态资源(如 HTML、CSS、JavaScript、图片等文件),但它们在使用上有一些细微的区别。以下是它们的详细对比:


1. 默认优先级

Spring Boot 会按照以下优先级加载静态资源:

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

如果多个目录中存在同名文件,Spring Boot 会优先加载优先级更高的目录中的文件。


2. 使用场景

static 目录
  • 推荐用途:存放前端静态资源(如 HTML、CSS、JS 文件)。
  • 特点 :
    • 是 Spring Boot 默认的静态资源目录之一。
    • 适合存放与前端相关的静态文件。
    • 优先级高于 public 目录。
public 目录
  • 推荐用途:存放公共资源(如图片、字体、下载文件等)。
  • 特点 :
    • 是 Spring Boot 默认的静态资源目录之一。
    • 适合存放不常变动或通用的静态资源。
    • 优先级低于 static 目录。

3. 示例

假设项目结构如下:

复制代码
src/main/resources/
├── static/
│   └── index.html
└── public/
    └── images/
        └── logo.png
访问方式
  • index.html 的访问 URL:http://localhost:8080/index.html
  • logo.png 的访问 URL:http://localhost:8080/images/logo.png

4. 自定义静态资源路径

如果需要自定义静态资源路径,可以在 application.properties 或 application.yml 中配置:

application.properties
properties 复制代码
spring.web.resources.static-locations=classpath:/custom-static/
application.yml
yaml 复制代码
spring:
  web:
    resources:
      static-locations: classpath:/custom-static/

配置后,Spring Boot 会从 custom-static 目录加载静态资源,而不是默认的 static 或 public 目录。


5. 总结

特性 static 目录 public 目录
优先级 较高 较低
推荐用途 前端静态资源(HTML、CSS、JS) 公共资源(图片、字体、下载文件)
默认路径 classpath:/static/ classpath:/public/
访问方式 http://localhost:8080/filename http://localhost:8080/filename

选择建议

  • 如果项目主要是前端应用,推荐将静态资源放在 static 目录。
  • 如果需要存放通用的公共资源(如图片、字体等),可以放在 public 目录。
  • 如果需要更灵活的管理,可以通过配置自定义静态资源路径。
相关推荐
陈随易1 天前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
AI你一生一世1 天前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影1 天前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯1 天前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
考虑考虑1 天前
Posrgresql恢复.backup文件
数据库·后端·postgresql
无奈何杨1 天前
风控决策系统决策流,策略模式,权重、顺序、投票、最坏
后端
AI开源软件1 天前
SpringBoot3+Vue3 财务管理系统如何设计:从业务单据到总账的模块划分
spring boot·vue3·领域建模·会计凭证·ruoyi office·业财协同·财务系统设计
Patrick_Wilson1 天前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言
苏三说技术1 天前
DeepSeek Harness入驻B站,评论区被干成了大型插件集市!
后端
橙序员小站1 天前
我一句话让 AI 把公众号工作台搭完了:部署实测记录
后端