文档章节

SpringBoot项目配置继承WebMvcConfigurationSupport导致自动化配置失效的解决方案

nonnetta
 nonnetta
发布于 2018/11/02 17:25
字数 368
阅读 670
收藏 2

一、 问题提出

首先我们看一下WebMvc自动配置类WebMvcAutoConfiguration的定义:

可能你也注意到了我圈起来到这个关键语句:

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

看到这行立马恍然大悟,原来SpringBoot做了这个限制,只有当WebMvcConfigurationSupport类不存在的时候才会生效WebMvc自动化配置,WebMvc自动配置类中不仅定义了classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/等路径的映射,还定义了配置文件spring.mvc开头的配置信息等。

还有,我们用SpringBoot不就是想用它的自动化配置么,不生效怎么行。。。

二、 解决方案

1. 在SpringBoot1.X的版本中,我们可以继承自WebMvcConfigurerAdapter,覆盖想要实现的方法即可。

2. 但是在SpringBoot2.X的定义中,WebMvcConfigurerAdapter已经被定义为@Deprecated,我们来看一下源代码:

SpringBoot还是蛮人道的,告诉你WebMvcConfigurerAdapter自从Spring5.0版本开始已经不建议使用了,但是你可以实现WebMvcConfigurer来达到类似的功能

很不幸的是尽管实现来WebMvcConfigurer仍然无法覆盖默认的RequestMappingHandlerMapping,此时你还需要WebMvcRegistrations这个接口

别问我为什么知道。。。。

© 著作权归作者所有

nonnetta
粉丝 7
博文 9
码字总数 8465
作品 0
厦门
高级程序员
私信 提问
加载中

评论(2)

星空dream
星空dream
还是想问:你为什么知道呢?
a
aileitianshi
奥秘在org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.EnableWebMvcConfiguration的构造方法中
springboot 2.0 配置 spring.jackson.date-format 不生效

问题:application.properties中的如下配置不生效,返回时间戳 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss 原因分析: 拦截器继承的 WebMvcConfigurationSupport ! 以前是用 WebMvcCo...

沧海一刀
2018/11/01
652
0
Spring Boot 静态资源文件配置

Spring Boot 静态资源文件配置 说在前面的话: 创建SpringBoot应用,选中我们需要的模块 SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 自己编写业务...

胖先森
2018/12/28
0
0
SpringBoot 项目 @EnableWebMvc 注解应用总结

版权声明:本文为 testcsdn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcsdn/article/details/80249894 SpringBoot 项目中不管是在哪个类上使用...

微wx笑
2018/05/09
0
0
spring boot.2x 启用拦截器配置 静态资源不能访问

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

最佳的时间就是现在
2018/06/28
210
0
SpringBoot拦截器WebMvcConfigurationSupport导致date-format失效

  今天使用Spring Boot 2.0.1.RELEASE开发微服务,配置了spring.jackson.date-format=yyyy-MM-dd HH:mm:ss,返回的Date类型能正常格式化。   但是在注册拦截器org.springframework.web.s...

祝涛
2018/05/08
6.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

SSH安全加强两步走

从 OpenSSH 6.2 开始已经支持 SSH 多因素认证,本文就来讲讲如何在 OpenSSH 下启用该特性。 OpenSSH 6.2 以后的版本多了一个配置项 AuthenticationMethods。该配置项可以让 OpenSSH 同时指定...

xiangyunyan
28分钟前
4
0
C或C++不是C/C++

http://www.voidcn.com/article/p-mucdruqa-ws.html

shzwork
今天
6
0
OSChina 周六乱弹 —— 如何将梳子卖给和尚

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :划水五分钟,专注两小时。分享Various Artists的单曲《贝多芬第8号钢琴奏鸣曲悲伤的第三乐章》: 《贝多芬第8号钢琴奏鸣曲悲伤的第三乐...

小小编辑
今天
179
8
ES5

什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误...

wytao1995
今天
7
0
c++ 内联函数调用快的原因

见图片分析

天王盖地虎626
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部