Spring Boot 默认静态资源目录有哪些?

星期二, 12月 30, 2025 | 2分钟阅读 | 更新于 星期二, 12月 30, 2025

@

Spring Boot 默认提供了 四个类路径(classpath)下的静态资源目录,用于存放如 HTML、CSS、JavaScript、图片等静态文件。

这些目录在应用启动时会自动被扫描,并映射到 Web 应用的根路径(/**),即你可以通过 http://localhost:8080/资源名 直接访问。

默认静态资源目录(按优先级从高到低):

  1. classpath:/META-INF/resources/
    • 通常用于第三方 JAR 包中的静态资源(例如 WebJars)。
    • 示例:src/main/resources/META-INF/resources/logo.png
  2. classpath:/resources/
    • 对应项目中的 src/main/resources/resources/
    • 适合放置不想放在 staticpublic 中的资源。
  3. classpath:/static/
    • 最常用、官方推荐的默认静态资源目录。
    • 对应 src/main/resources/static/
    • 示例:src/main/resources/static/css/style.css → 访问路径:/css/style.css
  4. classpath:/public/
    • 通用公共静态资源目录。
    • 对应 src/main/resources/public/

注意:如果多个目录中存在同名文件,Spring Boot 会按照上述优先级顺序返回第一个找到的文件(即 /META-INF/resources/ 优先级最高)。


补充说明:

  • 欢迎页支持:只要任意一个默认目录下有 index.html,访问 http://localhost:8080/ 就会自动返回该页面。
  • favicon 支持:自动查找 favicon.ico 文件作为网站图标。
  • 控制器优先:如果某个 URL 被 @Controller@RestController 映射了,即使静态资源目录中有同名文件,也会优先执行控制器逻辑。
  • 传统 WAR 结构(仅在打包为 WAR 且部署到 Servlet 容器时有效):
    • file:./src/main/webapp/ 也会被识别为静态资源目录(但不属于 classpath,默认优先级最低)。

配置源码依据(来自 Spring Boot 源码)

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
    "classpath:/META-INF/resources/",
    "classpath:/resources/",
    "classpath:/static/",
    "classpath:/public/"
};

该数组定义在 ResourceProperties 类中,是 Spring Boot 自动配置静态资源的基础。


如需自定义静态资源位置或访问路径,可通过以下方式:

  • 配置文件:spring.web.resources.static-locations
  • Java 配置:实现 WebMvcConfigurer 并重写 addResourceHandlers() 方法。

© 2025 - 2026 Generated by AI

🌱 Powered by Hugo with theme Dream.

关于

本网站内容全部由AI生成,但内容经过人工验证,这些内容是正确的、有效的。