WebMvcConfigurer
WebMvcConfigurer是Spring MVC框架中的一个核心接口,它允许开发者自定义Spring MVC的配置,以满足应用程序的特定需求。通过实现这个接口,开发者可以注册拦截器、添加视图控制器、配置视图解析器等,而无需使用XML配置。以下是对WebMvcConfigurer的详细解读:
一、接口定义与继承
WebMvcConfigurer是一个回调接口,它提供了一系列方法来配置Spring MVC的行为。在Spring 5.0之前,开发者通常会通过继承WebMvcConfigurerAdapter类来实现这个接口,但由于WebMvcConfigurerAdapter在Spring 5.0中被废弃,现在开发者直接实现WebMvcConfigurer接口即可。
二、常用方法及其作用
- addViewControllers(ViewControllerRegistry registry)
○ 用于注册视图控制器。这些控制器将请求路径映射到视图名称,非常适合简单的路径到视图的映射,无需编写实际的控制器类。 - configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
○ 配置静态资源的处理。通常用于启用或禁用默认的Servlet处理静态资源,如CSS、JavaScript文件等。 - addResourceHandlers(ResourceHandlerRegistry registry)
○ 用于配置静态资源的处理。开发者可以定义静态资源(如图片、CSS文件、JavaScript文件)的位置和访问路径。 - addInterceptors(InterceptorRegistry registry)
○ 用于注册拦截器。拦截器可以在请求处理的不同阶段(如请求前、请求后)执行自定义逻辑。 - configureViewResolvers(ViewResolverRegistry registry)
○ 配置视图解析器。开发者可以定义视图解析器的行为,例如Thymeleaf、JSP等视图的解析方式。 - configureContentNegotiation(ContentNegotiationConfigurer configurer)
○ 配置内容协商策略。决定响应的内容类型(如JSON、XML、HTML),根据请求头中的Accept字段来返回不同的响应格式。 - configureMessageConverters(List<HttpMessageConverter<?>> converters)
○ 配置消息转换器。消息转换器用于将HTTP请求和响应的内容转换为Java对象或将Java对象转换为响应内容。 - addCorsMappings(CorsRegistry registry)
○ 配置跨域资源共享(CORS)。允许开发者为特定的路径或URL模式设置跨域请求的规则。 - configurePathMatch(PathMatchConfigurer configurer)
○ 配置路径匹配规则。允许开发者自定义路径匹配的策略,如是否使用后缀模式匹配、是否使用尾随斜杠匹配等。
三、使用示例
以下是一个简单的WebMvcConfigurer实现示例,展示了如何注册视图控制器、配置静态资源处理、注册拦截器和配置视图解析器:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*; @Configuration
public class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("home"); registry.addViewController("/home").setViewName("homePage"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); } @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/WEB-INF/views/", ".jsp"); // 或者使用其他视图解析器,如Thymeleaf等 } // 其他配置方法...
}
在上面的示例中,我们实现了WebMvcConfigurer接口,并通过重写其方法来自定义Spring MVC的配置。我们注册了两个视图控制器,将"/“和”/home"路径映射到对应的视图名称;配置了静态资源处理器,将"/static/**“路径下的请求映射到类路径下的”/static/"目录;注册了一个拦截器,对所有请求进行拦截;并配置了JSP视图解析器。
总的来说,WebMvcConfigurer为开发者提供了极大的灵活性来自定义Spring MVC的配置,以满足不同应用程序的需求。
相关文章:
WebMvcConfigurer
WebMvcConfigurer是Spring MVC框架中的一个核心接口,它允许开发者自定义Spring MVC的配置,以满足应用程序的特定需求。通过实现这个接口,开发者可以注册拦截器、添加视图控制器、配置视图解析器等,而无需使用XML配置。以下是对Web…...
Sigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导
SSigrity Power SI VR noise Metrics check模式如何进行电源噪声耦合分析操作指导 Sigrity Power SI的VR noise Metrics check模式本质上是用来评估和观测器件的电源网络的耦合对于信号的影响,输出S参数以及列出具体的贡献值。 以下图为例...
Python+Appium+Pytest+Allure自动化测试框架-安装篇
文章目录 安装安装ADT安装NodeJs安装python安装appium安装Appium Server(可选)安装Appium-Inspector(可选)安装allure安装pytest PythonAppiumPytestAllure框架的安装 Appium是一个开源工具,是跨平台的,用于…...
Python的socket使用
在 Python 中,可以使用 socket 模块编写一个支持多个客户端连接的服务端。常见的实现方式包括使用多线程、多进程或异步 I/O。下面以多线程为例展示如何编写一个服务端,来同时接收和处理多个客户端的连接。 多线程服务端代码示例 这个示例服务端代码中…...
如何快速搭建一个3D虚拟展厅?
随着元宇宙概念的兴起,一个全新的虚拟、立体数字空间正逐步成为我们生活的一部分。在这个空间里,用户可以沉浸其中,进行丰富的交互操作,体验前所未有的无限可能。而如何快速搭建一个属于自己的元宇宙3D虚拟展厅,正成为…...
Android webview 打开本地H5项目(Cocos游戏以及Unity游戏)
webview打开本地Html文件 1.在路径前面加上file:// String filePath"file://"path;webView.loadUrl( filePath);2.打开权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" />3.启用JavaScript 设置本地访问权限 webVi…...
解决项目中图片出不来的bug
在页面端图片呈现割裂状: 查看代码: 将代码改成: 即可正常显示图片。...
手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)
手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索) 前言 前面的篇章中,我们从理论方向和实际市面上出现的音频线传输声音的方式,讨论绕开手机对SIM卡电话通话声音的封锁场景的可行性,并实际选购几款数字和模拟的USB转接…...
REST APIs与微服务:关键差异
在构建基于微服务的应用程序时RESYful API和微服务这两个术语经常相伴出现。然而,它们指的是截然不同的东西。 了解 RESTful API 和微服务之间差异的最简单方式是这样: 微服务:它们是构成更大规模基于微服务的应用程序的单个服务和功能&…...
【网安案例学习】反向蛮力攻击Reverse Brute Force Attack
【故事一】 在一个温暖的秋日下午,Jack坐在旧金山一家宁静的咖啡馆里,准备开始他的最新写作项目:追溯反向蛮力攻击的起源和发展。这是一个他一直想深入挖掘的主题,因为它揭示了网络安全世界中一个鲜为人知却极具影响力的故事。 …...
TCP/IP网络编程:理解网络编程和套接字
TCP/IP网络编程:理解网络编程和套接字 网络编程又叫做套接字编程,是因为在网络编程中依赖使用套接字(socket),网络编程一般是C/S架构,即客户端/服务器模式,在服务器端依赖套接字绑定自身接口,并开启监听客户端连接&am…...
CSS实现回到顶部且平滑过渡
背景 最近同学在项目开发的时候问了我一个问题:小白,回到顶部该怎么做呀?我当时就愣住了,心想这不是很基础的一个功能吗,然后想到该同学没有系统学过网页三剑客,我就给他讲了该怎么实现这个虽然基础但在很多…...
10 go语言(golang) - 数据类型:哈希表(map)及原理(二)
扩容 在 Go 语言中,当 map 的元素数量达到一定阈值时,会触发扩容操作以保持性能。这个过程称为 rehashing,即重新散列所有的键值对到一个更大的哈希表中。 扩容的条件 源码: func mapassign(t *maptype, h *hmap, key unsafe.…...
【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入
【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction 摘要:基于电子健康记录(EHR)的深度学习(DL)预…...
[POI2014] PTA-Little Bird(单调队列优化 DP)
luogu 传送门https://www.luogu.com.cn/problem/P3572 解题思路 先设 表示到 的最小劳累值。 很容易得出转移: 其中 由 和 的大小关系决定,并且 。 很显然,直接暴力是 的,会超时。 于是,考虑优化。 我们发现…...
【含开题报告+文档+PPT+源码】基于SpringBoot的体育馆管理系统的设计与实现
开题报告 近年来,随着人们生活水平的提高和健康意识的增强,体育馆作为提供体育锻和休闲娱乐的重要场所,其使用频率和管理难度也在不断增加。传统的体育馆管理模式通常依赖于人工记录和手动操作,不仅效率低下,而且容易…...
Vue3学习:vue组件中的图片路径问题
今天在做一个案例的时候,图片放在assets/images文件夹下,如下路径,其中的图片不能正常显示。 list: [{ id: 1, name: 欧拉公式啤酒杯, price: 30.00, src: ./assets/images/Euler.png},{ id: 2, name: 高斯分布马克杯, price: 40.00, src: ./…...
openCV基础-图像预处理Day26
图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,以下是一些常见的图像预处理操作&…...
给文件添加可读可写可执行权限
在Unix、Linux或类Unix操作系统中,你可以使用chmod命令来给文件添加可读、可写和可执行权限。权限通常分为三组:文件所有者(owner)、文件所属组(group)和其他用户(others)。每组都可…...
golang有序map
最近使用go开发排行榜的需求, 有些情况会用到有序map, 但是go竟然没有有序map的实现 本着自己动手丰衣足食的原则, 就自己实现了一个 原理 原理比较简单, 主要结合了container/list双向链表和map 使用双向链表存储key和value, 保证顺序, 使用map存储key和节点信息, 保证查找…...
FreeCAD钣金实战:从零到一,用SheetMetal工作台搞定Z型固定片设计与展开
1. 钣金设计与FreeCAD SheetMetal工作台入门 钣金件在机械设计中无处不在,从机箱外壳到支架固定片,几乎每个DIY项目都会用到。传统手工绘制展开图既耗时又容易出错,而FreeCAD的SheetMetal工作台让这个过程变得直观高效。最近我在改造工作室铝…...
如何快速解决Places.js地址自动补全的5个常见错误:终极处理技巧指南
如何快速解决Places.js地址自动补全的5个常见错误:终极处理技巧指南 【免费下载链接】places :globe_with_meridians: Turn any into an address autocomplete 项目地址: https://gitcode.com/gh_mirrors/pl/places Places.js是一个强大的地址自动补全JavaS…...
Jedi-Vim 终极自定义指南:如何集成其他Python分析工具提升开发效率
Jedi-Vim 终极自定义指南:如何集成其他Python分析工具提升开发效率 【免费下载链接】jedi-vim Using the jedi autocompletion library for VIM. 项目地址: https://gitcode.com/gh_mirrors/je/jedi-vim Jedi-Vim 是一款强大的 Vim 插件,它通过集…...
Qwen3.5-27B入门必看:Web界面操作+curl调用+错误排查全流程
Qwen3.5-27B入门必看:Web界面操作curl调用错误排查全流程 1. 快速了解Qwen3.5-27B Qwen3.5-27B是Qwen官方发布的视觉多模态理解模型,它不仅能够进行文本对话,还能理解图片内容。这个镜像已经在4张RTX 4090 D 24GB显卡的环境下完成部署&…...
linux sed/awk命令检索区间日志的问题
开发时如果需要检索一段时间内或者某个批量执行期间的所有日志,也就是区间日志时,手动检索会有一些问题:如要查询一段时间前的日志(比如归档日志),需要一页一页翻,费时且费眼睛使用grep筛选日志…...
月销20万美金!户外“神器”领跑全球爆单季,跨境卖家如何靠本地化内容突围?
随着北半球天气回暖,全球“户外露营”热潮正以前所未有的速度升温。根据最新行业数据显示,谷歌趋势中“outdoor camping”(户外露营)的搜索热度自3月起便持续攀升,维持在“22-100”的高位区间。 对于跨境卖家而言&…...
AgentCPM深度研报助手使用技巧:三个参数让报告更专业
AgentCPM深度研报助手使用技巧:三个参数让报告更专业 1. 为什么你的AI研报总像“流水账”?问题可能出在参数上 你用过AI写报告,结果是不是这样:内容看起来都对,但读起来总觉得“差点意思”?结构松散像拼凑…...
OpenClaw配置备份指南:Qwen3-4B模型参数迁移方案
OpenClaw配置备份指南:Qwen3-4B模型参数迁移方案 1. 为什么需要配置备份 上周我的主力开发机突然硬盘故障,导致辛苦配置了两个月的OpenClaw环境全部丢失。最痛苦的不是重装软件,而是那些精心调试的模型参数、飞书机器人凭证和自定义技能配置…...
单例模式全解析:5种写法 + 破坏与防护
文章目录什么是单例模式?实现方式饿汉式懒汉式方式一(线程不安全)方式二(同步方法)方式三(双重检查锁 DCL)枚举什么是单例模式? 保证一个类在全局只有一个实例,并提供一个全局访问点。 适用场…...
Unity性能优化终极利器:MeshFusion Pro
在现代游戏开发中,性能优化始终是一个核心问题。尤其是在大型场景或高复杂度模型的项目中,Draw Call 过多、顶点数量庞大以及实时生成对象都会严重拖慢游戏帧率,影响用户体验。为了应对这些挑战,Unity 开发者社区中出现了大量优化…...
