当前位置: 首页 > news >正文

重学SpringBoot3-WebMvcConfigurer接口

摘要:

本文详细介绍了SpringBoot 3中的WebMvcConfigurer接口,旨在帮助读者深入理解其原理和实现,从而能够更好地使用SpringBoot进行Web开发。阅读本文需要大约30分钟。

关键词:SpringBoot, WebMvcConfigurer, SpringMVC, Web开发

引言

背景介绍

SpringBoot作为一款优秀的Java Web开发框架,极大地简化了Web应用的配置和管理。WebMvcConfigurer接口是SpringBoot中用于定制SpringMVC配置的重要接口。

文章目的

本文旨在深入解析WebMvcConfigurer接口,帮助读者掌握其使用方法和原理。

基础知识回顾

基本概念

WebMvcConfigurer接口是SpringBoot中用于配置SpringMVC的接口,通过实现该接口,可以定制SpringMVC的各种行为。

核心组件

WebMvcConfigurer接口主要包括以下核心方法:

  • configureMessageConverters:配置消息转换器
    • configureContentNegotiation:配置内容协商策略
    • configureViewResolvers:配置视图解析器
    • addInterceptors:添加拦截器
    • addCorsMappings:配置跨域请求映射
    • addFormatters:添加格式化器

工作流程

SpringBoot启动时,会自动扫描实现WebMvcConfigurer接口的Bean,并调用其方法完成SpringMVC的配置。

需求分析

假设我们需要自定义一个拦截器,用于处理所有请求。我们可以通过实现WebMvcConfigurer接口,并重写addInterceptors方法来实现。

设计方案

  1. 创建一个拦截器类,实现HandlerInterceptor接口。
    1. 在拦截器中重写preHandle、postHandle和afterCompletion方法。
    1. 创建一个配置类,实现WebMvcConfigurer接口。
    1. 在配置类中重写addInterceptors方法,将自定义拦截器添加到拦截器链中。

实现步骤

  1. 创建拦截器类:
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在请求处理之前进行调用return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行}}```
2. 创建配置类:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor());}}

技巧与实践

概念介绍

  1. 拦截器:用于拦截请求并进行处理,可以用于日志记录、权限校验等场景。
    1. 内容协商:用于根据客户端请求的Accept头,选择合适的消息转换器。

常见问题与解答

Q1:如何添加全局异常处理器?
A1:通过实现WebMvcConfigurer接口,并重写configureHandlerExceptionResolvers方法,可以添加全局异常处理器。

Q2:如何配置静态资源映射?
A2:通过实现WebMvcConfigurer接口,并重写addResourceHandlers方法,可以配置静态资源映射。

结论与展望

WebMvcConfigurer接口为SpringBoot的Web开发提供了极大的便利,通过定制SpringMVC的各种行为,我们可以更好地实现业务需求。

未来,随着SpringBoot版本的迭代,WebMvcConfigurer接口可能会有更多的新特性,我们需要不断学习,跟上技术发展的步伐。

相关文章:

重学SpringBoot3-WebMvcConfigurer接口

摘要: 本文详细介绍了SpringBoot 3中的WebMvcConfigurer接口,旨在帮助读者深入理解其原理和实现,从而能够更好地使用SpringBoot进行Web开发。阅读本文需要大约30分钟。 关键词:SpringBoot, WebMvcConfigurer, SpringMVC, Web开发…...

《深入理解springCloud与微服务》笔记

第一章 微服务介绍 1.3 微服务的不足 1.3.2 分布式事务 CAP 理论,即同时满足“一致性”“可用性”和“分区容错”是 件不可能的事。 Consistency :指数据的强一致性。如果写入某个数据成功,之后读取,读到的都是新写入的数据&a…...

Vivado原语模板

1.原语的概念 原语是一种元件! FPGA原语是芯片制造商已经定义好的基本电路元件,是一系列组成逻辑电路的基本单元,FPGA开发者编写逻辑代码时可以调用原语进行底层构建。 2.原语的分类 原语可分为预定义原语和用户自定义原语。预定义原语为如and/or等门级原语不需要例化,可以…...

【linux本地安装tinycudann包教程】

【linux本地安装tinycudann包教程】 tiny-cuda-nn官网链接 如果你是windows 10系统的,想要安装tiny-cuda-nn可以参考我的文章——windows 10安装tiny-cuda-n包 根据官网要求:C++要求对应14,其实这样就已经告诉我们linux系统中的gcc版本不能高于9,同时下面又告诉我们gcc版…...

使用Nginx进行负载均衡

什么是负载均衡 Nginx是一个高性能的开源反向代理服务器,也可以用作负载均衡器。通过Nginx的负载均衡功能,可以将流量分发到多台后端服务器上,实现负载均衡,提高系统的性能、可用性和稳定性。 如下图所示: Nginx负…...

什么护眼台灯效果好?热门护眼台灯全方位测评推荐

台灯可以说是佳佳必备,尤其是家中有正在上学的孩子的更是需要一款好的台灯,不管是看书、写字都离不开台灯。不过很多家长在挑选台灯时往往仅关注到光线亮度是否充足,而忽略掉光线均匀度、舒适度等等方面的问题。所以选择一款优质的护眼台灯是…...

云上三问,迈向智能时代的关键

在今天的中国,第一热词是什么?面对这个问题,“新质生产力”当仁不让,而智能化技术毫无疑问是“新质生产力”最重要的来源之一。 在这样的大势下,大型政企是向新技术要“新质生产力”的时代先锋。云服务,则是…...

【网络安全】手机不幸被远程监控,该如何破解,如何预防?

手机如果不幸被远程监控了,用三招就可以轻松破解,再用三招可以防范于未然。 三招可破解可解除手机被远程监控 1、恢复出厂设置 这一招是手机解决软件故障和系统故障的终极大招。只要点了恢复出厂设置,你手机里后装的各种APP全部将灰飞烟灭…...

每日OJ题_哈希表④_力扣219. 存在重复元素 II

目录 力扣219. 存在重复元素 II 解析代码 力扣219. 存在重复元素 II 219. 存在重复元素 II 难度 简单 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&am…...

42.坑王驾到第八期:uniCloud报错

uniCloud 报错 今天调用云函数来调试小程序的时候突然暴了一个奇葩错误&#xff0c;require(…).main is not a function。翻官方文档后发现&#xff0c;原来是这样&#xff1a;**如果你写的是云对象&#xff0c;入口文件应为 index.obj.js&#xff0c;如果你写的是云函数入口…...

Linux常用操作命令

Linux常用操作命令 1.文件管理catfile 2.文档编辑3.文件传输4.磁盘管理5.磁盘维护6.网络通讯7.系统管理8.系统设置9.备份压缩10.设备管理 Linux 英文解释为 Linux is not Unix。 Linux内核最初只是由芬兰人李纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上…...

OpenCV的常用数据类型

OpenCV涉及的常用数据类型除包含C的基本数据类型,如&#xff1a;char、uchar&#xff0c;int、unsigned int,short 、long、float、double等数据类型外, 还包含Vec&#xff0c;Point、Scalar、Size、Rect、RotatedRect、Mat等类。C中的基本数据类型不需再做说明下面重点介绍一下…...

STM32串口通信—串口的接收和发送详解

目录 前言&#xff1a; STM32串口通信基础知识&#xff1a; 1&#xff0c;STM32里的串口通信 2&#xff0c;串口的发送和接收 串口发送&#xff1a; 串口接收&#xff1a; 串口在STM32中的配置&#xff1a; 1. RCC开启USART、串口TX/RX所对应的GPIO口 2. 初始化GPIO口 …...

《汇编语言》第3版 (王爽) 第14章

第14章 端口 检测点14.1 &#xff08;1&#xff09;.编程&#xff0c;读取CMOS RAM的2号单元的内容。 mov al,2 ;向al写入2 out 70,al ;将2送入端口70h in al,71 ;从端口71h读取2号单元的内容在CMOS RAM中用6个字节存放当前时间&#xff08;以BCD码形式存放&#xff09;&…...

Axure原型设计项目效果 全国职业院校技能大赛物联网应用开发赛项项目原型设计题目

目录 前言 一、2022年任务书3效果图 二、2022年任务书5效果图 三、2022年国赛正式赛卷 四、2023年国赛第一套样题 五、2023年国赛第二套样题 六、2023年国赛第三套样题 七、2023年国赛第四套样题 八、2023年国赛第七套样题 九、2023年国赛正式赛题&#xff08;第八套…...

力扣串题:字符串中的第一个唯一字母

映射做法&#xff1a;将字母转为数字之类的转化必须在运算中实现如-a int firstUniqChar(char * s){int a[26] {0};int len strlen(s);int i;for (i 0; i < len; i)a[s[i] - a];for (i 0; i < len; i) {if (a[s[i] - a] 1)return i;}return -1; }...

【五、接口自动化测试】GET/POST 请求区别

大家好&#xff0c;我是山茶&#xff0c;一个探索AI 测试的程序员 在网上看到了许多关于post与get之间区别的帖子&#xff0c;也有很多帖子是直接粘贴复制的&#xff0c;甚至连标题、符号都没改&#xff0c;甚至还有很多争议 一、post、get 关于post与get之间区别&#xff0c;…...

HDOJ 2036

改革春风吹满地 Problem Description “ 改革春风吹满地, 不会AC没关系; 实在不行回老家&#xff0c; 还有一亩三分地。 谢谢!&#xff08;乐队奏乐&#xff09;” 话说部分学生心态极好&#xff0c;每天就知道游戏&#xff0c;这次考试如此简单的题目&#xff0c;也是云里雾…...

2.案例、鼠标时间类型、事件对象参数

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …...

OPENCV(0-1之0.0)

OPENCV 第1周&#xff1a;基础知识和安装目标内容 第2-3周&#xff1a;图像处理基础目标内容 第4-5周目标内容 第6-7周目标内容 第8周及以后目标内容 时间安排如下&#xff1a; 第1周&#xff1a;基础知识和安装 目标 了解计算机视觉的基本概念&#xff0c;安装OpenCV&#x…...

**遗传算法在路径优化中的创新应用:从理论到Python实战**在智能优化领域,**遗传算法(Genetic A

遗传算法在路径优化中的创新应用&#xff1a;从理论到Python实战 在智能优化领域&#xff0c;遗传算法&#xff08;Genetic Algorithm, GA&#xff09; 凭借其强大的全局搜索能力和对复杂问题的适应性&#xff0c;成为解决组合优化问题的重要工具。本文将深入探讨如何使用 Pyth…...

PHP serialize进行序列化工作的完全指南

如果你和我一样&#xff0c;第一次在 PHP 中看到序列化字符串时会觉得很困惑。我当时在做一个 Laravel 项目&#xff0c;想搞清楚将任务推送到队列时到底发生了什么。我发现一些数据被序列化了&#xff0c;但不知道为什么以及怎么工作的。不过在我花时间研究序列化后&#xff0…...

P1AM CPU库:工业级嵌入式I/O控制框架解析

1. P1AM CPU库技术解析&#xff1a;面向工业自动化场景的嵌入式I/O控制框架1.1 平台定位与工程价值P1AM&#xff08;ProductivityOpen Automation Module&#xff09;并非通用型MCU开发板&#xff0c;而是一个专为工业现场总线级I/O扩展设计的嵌入式控制器平台。其核心价值在于…...

OpenClaw浏览器自动化:Qwen3-14B镜像驱动的高效数据采集

OpenClaw浏览器自动化&#xff1a;Qwen3-14B镜像驱动的高效数据采集 1. 为什么选择OpenClaw做浏览器自动化&#xff1f; 去年我在做一个市场调研项目时&#xff0c;需要从几十个电商平台抓取商品价格数据。传统爬虫方案遇到三个致命问题&#xff1a;动态加载内容难以解析、反…...

(开头直接进入主题,无废话)

&#xff08;ISAR RD成像&#xff09;feko仿真单站RCS&#xff0c;使用其导出的.ffe数据&#xff0c;基于MATLAB进行RD算法的ISAR成像 可以直接运行出结果&#xff0c;适合初学者参考和学习 从feko仿真到ISAR成像&#xff0c;全流程数据和代码都给你 我自己也曾是初学者&#x…...

直接可用4轴插补算法库,STM32的DDA插补联动与梯形加减速算法代码

可以直接使用的4轴插补算法库&#xff0c;不是丢给你一堆gr1b或者写字机或者3d打印的开源代码&#xff0c;本运控库上项目级别的&#xff0c;需要添加在自己的项目中&#xff0c;不支持gm码&#xff0c;只有运动控制核心代码&#xff0c;可以添加在自己项目中的&#xff0c;stm…...

学术研究加速器:OpenClaw+千问3.5-27B自动整理参考文献

学术研究加速器&#xff1a;OpenClaw千问3.5-27B自动整理参考文献 1. 为什么需要自动化文献管理 作为一名经常需要阅读大量论文的研究者&#xff0c;我过去每周要花至少3小时手动整理参考文献。从下载PDF、提取元数据到生成BibTeX条目&#xff0c;这些重复性工作不仅枯燥&…...

华人辍学博士揪出Claude Code 51万行源码泄露,官方请求下架超8000个GitHub代码库并回应:这次是人为失误,无人被解雇!

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 这两天 AI 圈的热点话题&#xff0c;莫过于 Claude Code 51 万行核心源码意外泄露事件。而这场风波的起点&#xff0c;并非什么高明的黑客攻击、也没有复杂的攻击路径&#xff0c;而是一位安全研究员的…...

Arduino轻量级CRC-32校验库:零依赖、低内存、确定性执行

1. 项目概述Arduino_CRC32 是一个面向嵌入式场景轻量级 CRC-32 校验库&#xff0c;专为 Arduino 及兼容平台&#xff08;如 STM32 Core for Arduino、ESP32 Arduino Core&#xff09;设计。其核心目标并非追求极致吞吐性能&#xff0c;而是以零依赖、低内存占用、确定性执行时间…...

中航迈特光束整形金属3D打印技术取得重要进展,多种材料已成功验证

中航迈特在金属3D打印装备研发方面持续发力&#xff0c;尤其是光束整形技术近期取得重要进展。在本届TCT亚洲展&#xff0c;它推出的MT280搭载了无级点环光斑能量智调系统&#xff0c;是光束整形金属3D打印当前较新的看点。据3D打印技术参考了解&#xff0c;无级点环光斑能量智…...