什么是静态资源?

静态资源是指Web应用中不会动态改变的文件,包括 HTML、CSS、JavaScript、图片 等前端资源。与传统Spring MVC应用需要手动配置资源映射不同,SpringBoot提供了开箱即用的静态资源解决方案。只需将静态资源放置在特定目录下,SpringBoot就会自动处理它们的映射和访问,显著降低了开发复杂度,提高了开发效率。


默认静态资源目录

SpringBoot默认提供了四个静态资源目录,开发者无需任何配置即可使用这些位置:

src/main/resources/
├── META-INF/resources/      # 目录1:JAR包中的静态资源,面向库/框架开发者
├── resources/               # 目录2:较少使用,避免与总资源目录混淆
├── static/                  # 目录3:最常用的目录(90%的情况)
└── public/                  # 目录4:存放完全公开的资源

这些目录的优先级按照列出的顺序从高到低排列,即 /META-INF/resources/ 中的资源会优先于其他目录中的同名资源被加载。

想要访问则直接在端口号后加对应文件名即可
例如
src/main/resources/static/1.png
访问则使用: http://localhost:8080/1.png


自定义静态资源目录

虽然默认静态资源目录在大多数情况下已经足够,但实际项目中可能需根据特定需求自定义静态资源目录和访问方式。

方式一:配置文件(推荐)

application.ymlapplication.properties 中添加以下配置:

spring:
  web:
    resources:
      static-locations:
        - "classpath:/custom-static1/"
        - "classpath:/custom-static2/"

还可以为自定义静态资源添加统一的访问前缀:

spring:
  mvc:
    static-path-pattern: "/custom/**"

注意:配置文件自定义的静态资源目录会完全覆盖默认资源目录(META-INF 除外)。自定义目录之间按照书写顺序排列优先级。

方式二:配置类方式

通过实现 WebMvcConfigurer 接口,以编程方式添加资源处理器:

@Configuration
public class StaticResourceConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("custom/**")
                .addResourceLocations("file:D:/project/static/");
    }
}

注意:配置类方式会在默认配置基础上追加资源目录,但如果遇到相同的URL前缀,配置类方式会覆盖基础配置。


WebJars:前端库的JAR包管理

WebJars 是将 前端库(如jQuery、Bootstrap、Vue.js)打包成JAR文件 的标准方法,方便我们在SpringBoot项目中像管理后端依赖一样管理前端依赖。

添加WebJars依赖

<dependency>
  <groupId>org.webjars</groupId>
  <artifactId>jquery</artifactId>
  <version>3.7.0</version>
</dependency>

访问WebJars资源

在HTML中直接引入:

<script src="/webjars/jquery/3.7.0/jquery.min.js"></script>

或通过URL访问:

http://localhost:8080/webjars/jquery/3.7.0/jquery.min.js

去除版本号(可选)

添加 webjars-locator-core 依赖后,可以省略版本号:

<dependency>
  <groupId>org.webjars</groupId>
  <artifactId>webjars-locator-core</artifactId>
  <version>0.59</version>
</dependency>

访问方式变为:

http://localhost:8080/webjars/jquery/jquery.min.js

项目实战:典型的静态资源目录结构

在实际SpringBoot项目中,推荐按如下结构组织静态资源:

src/main/resources/
├── static/                # 主要存放位置
│   ├── css/
│   ├── js/
│   └── images/
├── public/                # 次要存放位置,如上传文件
│   └── uploads/
└── templates/             # 存放Thymeleaf、Freemarker等模板文件
    └── *.html

总结

SpringBoot通过默认配置、配置文件、配置类三种方式支持灵活的静态资源管理。默认目录即放即用,自定义配置满足个性化需求,WebJars让前端依赖管理如后端般规范。合理组织静态资源目录,不仅能提升开发效率,还能让项目结构更清晰、更易维护。

希望这篇文章能帮助你更好地理解和运用SpringBoot中的静态资源管理机制。如果你有更好的实践或疑问,欢迎在评论区留言交流!

相关资源

  • SpringBoot官方文档 - 静态资源: https://docs.spring.io/spring-boot/reference/web/servlet.html#web.servlet.spring-mvc.static-content
  • WebJars官网: https://webjars.org

#SpringBoot #静态资源 #Web开发 #WebJars #配置教程

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐