springmvc中DispatcherServlet关键对象

news2025/1/16 1:59:45

以下代码为 spring boot 2.7.15 中自带的 spring 5.3.29

RequestMappingInfo

请求方法相关信息封装,对应的信息解析在 RequestMappingHandlerMapping 的 createRequestMappingInfo() 中实现。

对于 @RequestMapping 赋值的相关信息进行解析

protected RequestMappingInfo createRequestMappingInfo(
			RequestMapping requestMapping, @Nullable RequestCondition<?> customCondition) {

		RequestMappingInfo.Builder builder = RequestMappingInfo
				.paths(resolveEmbeddedValuesInPatterns(requestMapping.path()))
				.methods(requestMapping.method())
				.params(requestMapping.params())
				.headers(requestMapping.headers())
				.consumes(requestMapping.consumes())
				.produces(requestMapping.produces())
				.mappingName(requestMapping.name());
		if (customCondition != null) {
			builder.customCondition(customCondition);
		}
		return builder.options(this.config).build();
	}

HandlerMapping

实现类为 RequestMappingHandlerMapping

保存了请求路径与 RequestMappingInfo 的关系,最终在 AbstractHandlerMethodMapping 的内部类 MappingRegistry 中保存。

HandlerMapping相关实现类

相关的路径信息在 AbstractHandlerMethodMapping 中实现,由于实现了接口 InitializingBean,在 spring ioc 容器创建完后进行 bean 初始化时进行路径解析处理,最终解析为 RequestMappingInfo 对象,保存到 AbstractHandlerMethodMapping 的内部类 MappingRegistry 中。

HandlerMethod


保存信息如下
bean
bean 名称

beanType
bean 类型

method
bridgeMethod
方法类型

HandlerAdapter

实现类为 RequestMappingHandlerAdapter

最终请求处理类

HandlerExecutionChain

handler
保存了 HandlerMethod 信息

interceptorList
HandlerInterceptor 实现类

请求过程通过 HandlerExecutionChain 中的 HandlerMethod 进行流转,最终请求在 InvocableHandlerMethod 中通过反射调用对应 controller 的方法。

HandlerMethod继承类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

淘宝天猫渠道会员购是什么意思?如何开通天猫淘宝渠道会员购有什么用?

淘宝天猫渠道会员购是什么意思&#xff1f; 淘宝天猫渠道会员购与淘宝天猫粉丝福利购意思基本相同&#xff0c;都可以领取淘宝天猫大额内部隐藏优惠券、通过草柴APP开通绑定渠道会员还可以获得购物返利。 草柴APP如何绑定开通淘宝天猫渠道会员&#xff1f; 1、手机下载安装「…

GRACE-FO L2产品的发布说明 - 版本UTCSR RL-06.1产品

数据更新日期&#xff1a;2023-5-11 0&#xff09;此说明取代了所有先前与UTCSR-RL06.1 GRACE-FO Level-2产品相关的旧版本发布说明。 1&#xff09;截止到本发布说明日期的GRACE-FO RL-06.1产品文件列表如下&#xff1a; 2&#xff09;通常情况下&#xff0c;每个日历月有四…

vscode 无法打开源文件

以下是c/c插件的intelligense设置情况&#xff1a; 解决办法&#xff1a; 重新安装vsode无用&#xff1b;重新下载mingw64&#xff0c;管用了&#xff01;&#xff08;我猜可能是之前换电脑移植文件的时候导致了部分文件丢失&#xff09;

【LLM】主流大模型体验(文心一言 科大讯飞 字节豆包 百川 阿里通义千问 商汤商量)

note 智谱AI体验百度文心一言体验科大讯飞大模型体验字节豆包百川智能大模型阿里通义千问商汤商量简要分析&#xff1a;仅从测试“老婆饼为啥没有老婆”这个问题的结果来看&#xff0c;chatglm分点作答有条理&#xff08;但第三点略有逻辑问题&#xff09;&#xff1b;字节豆包…

普通人需要做副业吗?有什么合适的副业

普通人现在需要做副业吗&#xff0c;我觉得有这个必要&#xff0c;当然也要根据个人情况选择&#xff0c;那么做副业有什么好处呢&#xff1f;做副业可以带来额外的收入&#xff0c;增加灵活性&#xff0c;提升技能&#xff0c;发展创造力&#xff0c;降低风险&#xff0c;提供…

(黑客)网络安全———自学方法

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

YoloV5实时推理最短的代码

YoloV5实时推理最简单代码 import cv2 import torch# 加载YOLOv5模型 model torch.hub.load(ultralytics/yolov5, yolov5s)# 使用CPU或GPU进行推理 device cuda if torch.cuda.is_available() else cpu model.to(device)# 打开摄像头&#xff08;默认摄像头&#xff09; cap…

【论文笔记】Diffusion-based 3D Object Detection with Random Boxes

原文链接&#xff1a;https://arxiv.org/abs/2309.02049 1. 引言 基于激光雷达的3D目标检测方法通常依赖经验设置锚框或中心半径&#xff0c;而本文探索从随机框直接预测真实边界框。   本文提出Diff3Det&#xff0c;使用扩散模型进行3D目标检测。首先为真实边界框添加高斯噪…

[论文必备]最强科研绘图分析工具Origin(1)——安装教程

之前在论文中pr曲线和loss曲线对比用到了Origin这个最强科研绘图分析工具&#xff0c;被导师狠狠夸了&#xff0c;下面来分享一下~ 本篇先带你手把手安装这个软件&#xff0c;可以先点再慢慢看哦~ 目录 &#x1f4e2;一、软件简介 &#x1f33b;二、安装教程 &#x1f384…

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…

Docker中将静态页面部署nginx

1.启动nginx docker start nginx 2.进入nginx cd /usr/share/nginx/html 3.vim index.html 说明&#xff1a;没有vim命令&#xff0c;docker镜像只保留了基本的功能&#xff08;文件&#xff09;。 4.解决方法 数据卷&#xff1a;是一个虚拟目录&#xff0c;是容器内目录与…

山西电力市场日前价格预测【2023-10-04】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-04&#xff09;山西电力市场全天平均日前电价为311.79元/MWh。其中&#xff0c;最高日前电价为427.05元/MWh&#xff0c;预计出现在18: 45。最低日前电价为249.76元/MWh&#xff0c;预计…

Linux apt-get update - Could not connect to XXX(Connection refused)

Linux: apt-get update ----Err:Could not connect to XXX(Connection refused) - 知乎 先换源&#xff08;vi不好使用&#xff0c;可以换成gedit&#xff09; 若还是不行&#xff0c;可以再尝试执行&#xff1a; unset http_proxy unset https_proxy

决策树C4.5算法的技术深度剖析、实战解读

目录 一、简介决策树&#xff08;Decision Tree&#xff09;例子&#xff1a; 信息熵&#xff08;Information Entropy&#xff09;与信息增益&#xff08;Information Gain&#xff09;例子&#xff1a; 信息增益比&#xff08;Gain Ratio&#xff09;例子&#xff1a; 二、算…

【好玩的开源项目】Docker部署cook菜谱工具

【好玩的开源项目】Docker部署cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本 四、下载cook镜像五、部署cook菜谱工具5.1 创建cook容器5.2 查看容器状态5.3 检查容器日志 六、…

C/S架构学习之TCP的三次握手和四次挥手

TCP的三次握手&#xff1a;一定由客户端主动发起的&#xff0c;发生在建立连接的过程中。此过程发生在客户端的connect()函数和服务器的accept()函数之间。第一次握手&#xff1a;客户端向服务器发送一个带有SYN标志的数据包&#xff0c;表示客户端请求建立连接。并且客户端会选…

码多多ChatAI智能聊天系统-PHP源码版V2.5.0+开源端 安装教程

码多多ChatAI智能聊天系统PHP源码版&#xff0c;基于前后端分离架构以及Vue3、uni-app、ThinkPHP6.x、PHP8.0技术栈开发&#xff0c;包含PC端、H5端、小程序端、APP端。 该系统播播资源测试安装了针对环境要求高&#xff0c;PHP8.0MYSQL5.7。根目录下check文件加密文件&#x…

Ae 效果:CC Ripple Pulse

扭曲/CC Ripple Pulse Distort/CC Ripple Pulse CC Ripple Pulse &#xff08;CC 波纹脉冲&#xff09;主要用于创建动态的波纹脉冲效果&#xff0c;适用于需要动态涟漪或水波效果的场景。 效果将被限制在图层大小范围。 ◆ ◆ ◆ 效果属性说明 Center 中心 用于设置波纹脉冲…

Spring源码篇(十一)注册bean的方式

文章目录 前言bean注册的方式class扫描beanComponentScanImportDeferredImportSelectorImportBeanDefinitionRegistrar xml注册beanspring扩展点总结 前言 本篇主要以注册bean的方式从源码角度展开分析总结。 bean注册的方式 首先&#xff0c;由spring管理的对象&#xff0c…