springMVC数据绑定原理梳理

本文深入探讨了springMVC的数据绑定原理,从DispatcherServlet开始,经过InvocableHandlerMethod解析请求参数,通过HandlerMethodArgumentResolverComposite找到合适的ArgumentResolver进行处理。重点介绍了ModelAttributeMethodProcessor和RequestResponseBodyMethodProcessor,分别针对对象参数和RequestBody(如JSON/XML)的处理。
摘要由CSDN通过智能技术生成
springMVC数据绑定原理梳理:
1、流程梳理

DispatcherServlet

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

InvocableHandlerMethod

public Object invokeForRequest(NativeWebRequest request, ModelAndViewContainer mavContainer,
			Object... providedArgs) throws Exception {
   

		Object[] args = getMethodArgumentValues(request, mavContainer, providedArgs);
		Object returnValue = doInvoke(args);
		return returnValue;
	}

Invoke the method after resolving its argument values in the context of the given request
在给定请求的上下文中解析该方法的参数值后调用该方法

InvocableHandlerMethod

private Object[] getMethodArgumentValues(NativeWebRequest request, ModelAndViewContainer mavContainer,
			Object... providedArgs) throws Exception {
   
		//从HandlerMethod获取方法的参数
		MethodParameter[] parameters = getMethodParameters();
		Object[] args = new Object[parameters.length];
		for (int i = 0; i < parameters.length; i++) {
   
			MethodParameter parameter = parameters[i];
			//初始化一个通过方法名称解析方法参数名称的解析器《ParameterNameDiscoverer》
			parameter.initParameterNameDiscovery(this.parameterNameDiscoverer);
			//解析泛型的实际参数类型
			GenericTypeResolver.resolveParameterType(parameter, getBean().getClass()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值