Spring Boot 中的静态资源访问 以及 自定义访问策略

在默认情况下,有五个位置被 Spring Boot 认定为可以读取到静态资源的位置。它们分别为:classpath:/META-INF/resources、classpath:/resources/、classpath:/static/、classpath:/static/与/,优先级依次降低。也就是说,将可以被读取的文件放置在这些地址,通过浏览器就可以访问了。比如当前在中间放置了 wallpaper.png ,访问 localhost:8080/wallpaper.png 就可以读取了。

采用自定义规则

第一种是方法就是直接在 application 配置文件中进行配置:

spring:
  mvc:
    static-path-pattern: /get-from-static/**
  resources:
    static-locations: classpath:/static-resources/

现在就可以通过 localhost:8080/get-from-static/1.png 访问到静态资源 classpath:/static-resources/1.png 了。

第二种方法是实现 WebMvcConfigurer 接口,重写 addResourceHandlers,代码如下:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
          
   

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
          
   
        registry.addResourceHandler("/get-from-static/**")
                .addResourceLocations("classpath:/static-resources/");
    }
}

第二种方法的特点是,它不会覆盖掉之前系统默认的5种位置。而采用 application 配置文件配置后,系统默认的位置就无效了。

另,静态资源文件的文件夹的名称不要加入数字,可能会出错。
经验分享 程序员 微信小程序 职场和发展