之前发过通过继承WebMvcConfigurationSupport来访问静态资源的文章——img标签访问静态资源,代码如下
@Configuration
public class LocalPathWebMvcConfigurer extends WebMvcConfigurationSupport {
/**
* 在springboot项目中,允许浏览器访问指定本地文件
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/img/**").addResourceLocations("file:///D:/exerciting/java/mall-picture/");
super.addResourceHandlers(registry);
}
}
这个方法是可行的,但会带来一个小问题。
问题:在项目中加入swagger-ui这种本身就带静态资源的依赖,它该怎么访问?
像这些本身就要访问静态资源的,它们一般是实现了WebMvcConfigurer,而不是继承WebMvcConfigurationSupport。
当我们用上面代码中的方法访问静态资源后,会发现你不能继续访问swagger-ui.html了,所以改进的做法是将自己要访问的静态资源也用实现WebMvcConfigurer中addResourceHandlers方法的方式重写,代码如下:文章来源:https://www.toymoban.com/news/detail-812667.html
@Configuration
public class BaaJoyMallWebMvcConfigurer implements WebMvcConfigurer {
@Autowired
private TokenToMallUserMethodArgumentResolver tokenToMallUserMethodArgumentResolver;
/**
* 在springboot项目中,允许浏览器访问指定本地文件,最好用实现WebMvcConfigurer的方法而不是继承WebMvcConfigurationSupport的方法重写
* 因为如果像swagger-ui这种自带静态资源的,可能会因此访问不到
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/goods-img/**")
.addResourceLocations("file:///D:/exerciting/java/baajoy-mall-springboot/src/main/resources/goods-img/");
registry.addResourceHandler("/upload/**")
.addResourceLocations("file:///D:/exerciting/java/baajoy-mall-springboot/src/main/resources/upload/");
}
}
当然两种方法都是可以的,至于有没有其他方法,还没有太多了解。文章来源地址https://www.toymoban.com/news/detail-812667.html
到了这里,关于springboot 项目访问静态资源遇到的问题,WebMvcConfigurer和WebMvcConfigurationSupport的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!