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 目录。
  • 如果需要更灵活的管理,可以通过配置自定义静态资源路径。
相关推荐
鹿角片ljp4 分钟前
KV Cache 解析
java·算法
captain37620 分钟前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫1 小时前
意图识别置信度和检索重排的分数
java
明月_清风1 小时前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
caoerzhong1 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
GetcharZp1 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
程序员JerrySUN2 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
行百里er2 小时前
Redis 版本演进、新特性与协议那些事儿
redis·后端
Joy T3 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者3 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘