SpringBoot 静态资源映射
前言,项目需求,有需要从本地盘符上传,下载文件,上传和图片展示的需求,故采用静态资源映射来解决
有两种解决方案1.添加配置类2.配置文件添加相应的配置
第一种添加配置类
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 将/static/**访问映射到classpath:/mystatic/
registry.addResourceHandler("/epr/**").addResourceLocations("D:/epr/");
}
}
使用这种方式遇到了一个问题,之前返回的是json格式的数据,加了这个配置类,所以返回的数据格式被改成xml,虽然改成xml,但也有解决办法,如下
@RequestMapping(value="/list", produces={"application/json; charset=UTF-8"})
当然这就比较繁琐了,每个接口都需要加
第二种 配置文件
spring.mvc.static-path-pattern=/epr/**
spring.resources.static-locations=file:D:/epr/
最后看一下效果
配置的映射路径貌似不能为D盘的根目录,试一下不就知道了
默认的映射路径有
- classpath:/static
- classpath:/public
- classpath:/resources
- classpath:/META-INF/resources
总结一下,大致规则是这样,
- 什么配置又不加,默认的映射路径如上
- 只加location的配置,访问路径不会被覆盖,配置的路径会追加到默认路径中
- 配置parten,并且配置location,则默认的访问路径会被parten覆盖,默认路径和配置路径都可以访问,访问的时候加都加parten
后续,不管是配置类还是配置文件,都是增加了boot默认的映射链