springboot: 配置消息转换器后,拦截器无效,出现No mapping for GET xxx
创始人
2025-05-31 13:44:06
0

问题描述

  • 项目开发之前使用拦截器对controller的访问进行拦截,一切功能正常。今天在项目中加入消息转换器后,发现无论访问什么网页,都是404错误,No mapping for GET xxx
    在这里插入图片描述

问题分析

  • 出现的错误很像是拦截器没有配置对导致的,通过注释WebMvcConfigMsgConverter消息转换器后,发现项目和原理一样能够正常运行,初步怀疑是拦截器和消息转换器发生了冲突。
  • 由于消息转换器中:将消息转换器对象追加到mvc框架的转换器集合中converters.add(0,messageConverter);这里设置了一个优先级0,表示在所有配置之前生效当前配置,优先级最高,于是怀疑是当前消息转换器的执行后就不再执行拦截器。
  • 将两个配置文件整合到一起,发现奇怪的错误,即满足单继承,又实现了接口,idea提示我们要重写很多方法,但是单独实现接口是不用重写这些default方法的。

解决方案

  • 查找资料发现在 SpringBoot 2.0 后,官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),方式二继承WebMvcConfigurationSupport类。其实使用其中一种方法就可以完成对应的功能!这里使用实现接口的方法!
@Slf4j
@Configuration
public class BackendWebMvcConfig implements WebMvcConfigurer {@Overridepublic void extendMessageConverters(List> converters) {log.info("拓展消息转换器成功加载");//创建消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//设置对象转换器,底层使用Jackson将Java对象转为jsonmessageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中converters.add(0,messageConverter);}@Overridepublic void addInterceptors(InterceptorRegistry registry) {//重写方法,添加拦截器方法registry.addInterceptor(loginInterceptor())//拦截哪些路径.addPathPatterns("/**")//不拦截路径.excludePathPatterns("/employee/backend/page/login/login.do","/backend/**","/employee/backend/page/login/logout.do","/front/**","/error");}@Beanpublic LoginInterceptor loginInterceptor(){return new LoginInterceptor();}}

成功解决问题!
在这里插入图片描述

相关内容

热门资讯

开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
《成都市体育发展条例》6月1日... 新华网成都6月1日电 6月1日,《成都市体育发展条例》(以下简称《条例》)开始实施。成都市体育局局长...
LCD1602液晶显示屏模块资... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
基于微信小程序的小区疫情防控小... 文末联系获取源码 开发语言:Java 框架:ssm JDK版本ÿ...
【AUTOSAR】【通信安全】... 目录 一、概述 二、约束和假设 三、依赖模块 四、功能描述 4.1 开发错误 4.1.1 运行时错误...
2023面试题汇总二 一、CSS面试题 1. 清除浮动的方式有哪些? 为什么要清除浮动?因为浮...