文档章节

spring boot.2x 自定义WebConfig 后静态资源不能访问

x
 xxm1995
发布于 2018/11/30 10:58
字数 348
阅读 3
收藏 0

spring boot.2x 自定义WebConfig 后静态资源不能访问

1.现象

在使用SpringBoot2.x的时,自定义WebConfigurer时继承从WebMvcConfigurerAdapter改成了WebMvcConfigurationSupport ,然而发现只要继承 WebMvcConfigurationSupport并且将文件加入配置,在yml中配置路径的相关内容会失效,就会遇到静态资源无法访问的问题。

2.原因及解决方法

这是因为WebMvc的自动配置都在WebMvcAutoConfiguration类中,但是类中有这个注解@ConditionalOnMissingBean({WebMvcConfigurationSupport.class}),意思是一旦在容器中检测到WebMvcConfigurationSupport这个类,WebMvcAutoConfiguration类中的配置都不生效。所以一旦我们自己写的配置类继承了WebMvcConfigurationSupport,相当于容器中已经有了WebMvcConfigurationSupport,所以默认配置都不会生效,都得自己在配置文件中配置。

静态资源映射配置

@Component
class WebConfigurer extends WebMvcConfigurationSupport {
	/**
	* 可以分别配置多个静态路径的映射规则,spring会自动调用add()方法进行规则添加.
	*/
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //静态目录映射
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/META-INF/resources/")
                .addResourceLocations("classpath:/resources/")
                .addResourceLocations("classpath:/static/")
                .addResourceLocations("classpath:/public/");
        //特定静态目录映射
        registry.addResourceHandler("/files/**")
                .addResourceLocations("file:///"+bootdoConfig.getUploadPath());
        super.addResourceHandlers(registry);
    }
}

© 著作权归作者所有

x
粉丝 0
博文 24
码字总数 12971
作品 0
菏泽
私信 提问
spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法

在spring boot 1.5.x中,resources/static目录下的静态资源可以直接访问,并且访问路径上不用带static,比如静态资源放置位置如下图所示: 那么访问静态资源的路径可以是: http://localhost...

Mr---D
2018/04/13
0
0
spring boot.2x 启用拦截器配置 静态资源不能访问

今天在使用SpringBoot时遇到静态资源无法访问的问题,启用拦截器配置就会出现静态资源无法访问。 发现只要继承 WebMvcConfigurationSupport 并且将文件加入配置 发现如果继承了WebMvcConfigu...

最佳的时间就是现在
2018/06/28
0
0
spring boot框架学习6-spring boot的web开发(2)

本章节主要内容: 通过前面的学习,我们了解并快速完成了spring boot第一个应用。spring boot企业级框架,那么spring boot怎么读取静态资源?如js文件夹,css文件以及png/jpg图片呢?怎么自定...

凯哥java
2017/11/06
0
0
不学无数——SpringBoot入门V

SpringBoot 1.开发一个Web程序 SpringBoot是非常适合开发Web应用的,因为他内嵌有Tomcat、Jetty、Undertow或者Netty。大部分的应用可以通过加载spring-boot-starter-web模块能够快速的创建并...

不学无数d
2018/07/28
0
0
微服务 SpringBoot 2.0(八):静态资源和拦截器处理

一文搞清楚静态资源和拦截器 —— Java面试必修 引言 接触一个web项目,首先要确认的就是入口,所以静态资源和拦截器在项目中是架构级的,在第五章我们整合了Thymeleaf模块,初次认识了Sprin...

阿郎_
2018/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7中使用firewalld的基本命令

1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :......

葉者
15分钟前
2
0
Taro ScrollView 组件的 scrollTop 属性是个坑

官方issue:ScrollView设置scrollTop没效果 同样的,设置 scrollTop=0 并不能实现置顶,官方回复早就修复了,我的 Taro 版本已经是最新的,然而并未修复。 万能的评论区,给出了失效的原因。...

dkvirus
今天
3
0
Qt那些事0.0.21

这次还是关于PRO文件中QMAKE_POST_LINK的故事。 平时都是使用VS2015作为编译器,恰巧想用MinGW编一版程序,结果偏偏出现了错误。话说测试的这个项目可是在Linux下(fodera 20)可以正确编译通...

Ev4n
今天
2
0
OSChina 周六乱弹 —— 抖音外放 亲妈下葬。

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :一直没想明白黎明是怎么混进「四大天王」的,直到最近网易云音乐心动模式开启之后 #今日歌曲推荐# 《那有一天不想你》- 黎明 手机...

小小编辑
今天
600
8
Linux使用源码包安装软件

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 源码包 Linux软件多数免费、开源,是开发人员编写的,具有很强可读性的一组相关代码文本。 源码包 --> 编...

迷失De挣扎
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部