1. 简介

WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。

基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口,WebMvcConfigurerAdapter 抽象类是对WebMvcConfigurer接口的简单抽象(增加了一些默认实现),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapter已被废弃 。

官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport

  • 方式一:实现WebMvcConfigurer接口(推荐)
  • 方式二:继承WebMvcConfigurationSupport类

WebMvcConfigurer 提供的接口列表如下:

public interface WebMvcConfigurer {default void configurePathMatch(PathMatchConfigurer configurer) {}default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {}default void configureAsyncSupport(AsyncSupportConfigurer configurer) {}default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {}default void addFormatters(FormatterRegistry registry) {}default void addInterceptors(InterceptorRegistry registry) {}default void addResourceHandlers(ResourceHandlerRegistry registry) {}default void addCorsMappings(CorsRegistry registry) {}default void addViewControllers(ViewControllerRegistry registry) {}default void configureViewResolvers(ViewResolverRegistry registry) {}default void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {}default void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {}default void configureMessageConverters(List<HttpMessageConverter<?>> converters) {}default void extendMessageConverters(List<HttpMessageConverter<?>> converters) {}default void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {}default void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {}@Nullabledefault Validator getValidator() {return null;}@Nullabledefault MessageCodesResolver getMessageCodesResolver() {return null;}
}

2. 接口实现

2.1 addInterceptors

  • 作用: 拦截所有接口请求,常见的JWT校验便是在这里实现
  • 实例:
@Configuration
public class MvcConf implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {//拦截所有接口,/test2除外registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/test2","/login.do");}
}

写个简易拦截器 MyInterceptor

public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token = request.getHeader("token");return StrUtil.isNotEmpty(token);}
}

2.2 addResourceHandlers

  • 作用: 重写静态资源配置,自定义静态资源路径的映射
  • 示例:
    @Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/img/**").addResourceLocations("classpath:/static/image/");}

这段代码,所有从/img路径访问的图片,都会从 /static/image目录去查找

2.3 addCorsMappings

  • 作用: 配置跨域请求的问题
  • 示例:
    @Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**");}

2.4 addViewControllers

  • 作用: 页面跳转转换,可以替代controller接口的方法
  • 示例:
    @Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/login2.do").setViewName("login");}

SpringBoot 使用WebMvcConfigurer处理请求相关推荐

  1. Springboot如何利用http请求控制器

    写好了接口,现在想用postman测试一下这个接口是否正确,想请问怎么传入请求参数?先谢谢了! Springboot如何利用http请求控制器 >> java 这个答案描述的挺清楚的: h ...

  2. spring-boot使用springAOP对接口请求、异常、响应进行日志记录

    spring-boot使用springAOP对接口请求.异常.响应进行日志记录 日志切面类LogAspect 请求control异常全局监控 日志切面类LogAspect /*** @Author: ...

  3. SpringBoot允许跨域请求

    在前后端分离的架构中,允许跨域请求是一个很重要的设置.SpringBoot项目中允许跨域请求比较简单,只需要我们定义好配置类即可. 在com.example.csdn.config包里面创建CorsC ...

  4. springboot +element-axios跨域请求

    1.初始化element项目 1.1:vue init webpage '项目名称' 1.2:npm i element-ui -S 1.3:在main.js添加 import ElementUI f ...

  5. SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header

    场景 vue中使用axios请求springboot的后台接口时需要传递一个int数组. 原本使用的是get请求. export function handCompletedRequest(ids) ...

  6. springboot获取多个请求参数_springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...

  7. springboot 配置多个请求服务代理

    springboot 配置服务代理 有时候,我们可能有下边这样的需求: 即,针对于分布式服务,我们会有多种业务接口服务,但是服务器上可能只要求开放一个服务的端口,比如上图的restA项目端口是对外开放 ...

  8. springboot 接口文档 请求 enum_Spring Boot集成SpringFox 3:生成Swagger接口文档

    SpringFox介绍 SpringFox是一个开源的API Doc的框架, 它的前身是swagger-springmvc,可以将我们的Controller中的方法以文档的形式展现.官方定义为:Aut ...

  9. springboot+aop切点记录请求和响应信息

    本篇主要分享的是springboot中结合aop方式来记录请求参数和响应的数据信息:这里主要讲解两种切入点方式,一种方法切入,一种注解切入:首先创建个springboot测试工程并通过maven添加如 ...

最新文章

  1. 如何和相亲对象无限聊天?程序员甩了这份架构图……| 每日趣闻
  2. 基于.net standard 的动态编译实现
  3. sql LEFT JOIN RIGHT JOIN(左连接)(mysql)
  4. 数据集永久下架,微软不是第一个,MIT 也不是最后一个
  5. editplus配置刷新
  6. 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
  7. windows磁盘空间释放(二)
  8. H3C防火墙安全域知识、远程登陆及web页面
  9. 静候Google I/O 2014大会开幕
  10. 基于Opencv3的活动轮廓模型--CV, RSF and DRLSE
  11. Bmob后台云数据库
  12. 工业自动化数据采集方案
  13. Docker安装Rally
  14. Android获取当前位置(GPS和网络定位)
  15. 福州室外婚纱摄影哪家好?
  16. VMWare快照原理(写时复制)?快照保护、快照克隆的作用?
  17. html里div水平居中,html+css div水平居中的几种方法
  18. java.lang.IllegalStateException错误
  19. java——随机口算题(加减乘除随机)
  20. 史上前端面试题(HTML)

热门文章

  1. SAP 月结F.19与GR/IR
  2. SAP发布S4/HANA 意义超过R3
  3. ABAP--Smart Forms多语言翻译
  4. mysql里面的sql_mysql工作中的sql
  5. 创业阶段如何找客户_初创企业在不同的创业阶段:如何做好市场营销?
  6. 计算机网络系统结构分析 pdf,计算机网络(实验三:数据包结构分析).pdf
  7. 计算机组成原理汇编程序实验,计算机组成原理汇编实验(资料).pdf
  8. android sdk v28,Android Studio Gradle Build失败 – 要求提供不存在的sdk版本
  9. python从字符串解析方法名
  10. python 使用 sorted 对 列表嵌套元组的数据进行排序