Spring Boot静态资源访问顺序

在 Spring Boot 中,staticpublic 目录都用于存放静态资源(如 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.propertiesapplication.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 目录加载静态资源,而不是默认的 staticpublic 目录。


5. 总结

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

选择建议

  • 如果项目主要是前端应用,推荐将静态资源放在 static 目录。
  • 如果需要存放通用的公共资源(如图片、字体等),可以放在 public 目录。
  • 如果需要更灵活的管理,可以通过配置自定义静态资源路径。
相关推荐
浮游本尊13 分钟前
Java学习第45天 - 消息队列入门、异步解耦与最终一致性(RabbitMQ / RocketMQ)
后端
fallen_fish18 分钟前
多路径写入一致性:从一次 Debug 到系统性防御
后端
用户2986985301419 分钟前
Word 文档字符级格式化:Java 实现方案详解
java·后端
血小溅20 分钟前
Skill 脚本语言选型:Python、Node.js、Shell 到底怎么选?
人工智能·后端
Heracles102420 分钟前
一篇文章教你学会MCP
后端
范闲20 分钟前
Charmbracelet TUI 生态系统指南
后端
颜进强24 分钟前
AI性能参数-截断、延迟与流式输出
前端·后端·ai编程
浮游本尊27 分钟前
Java学习第44天 - 本地二级缓存 Caffeine、Redis 分布式锁与热点 Key / 库存预扣
后端
浮游本尊29 分钟前
Java学习第43天 - Redis 缓存基础、Cache-Aside 模式与缓存一致性
后端
云技纵横29 分钟前
线程池 OOM 实战:无界队列配错,5 万个任务撑爆 JVM
后端