spring mvc参数解析 (九)HandlerMethodArgumentResolver

前面分析了复杂对象的参数解析,接着分析简单参数解析,简单参数就是long int string 等。其实简单参数的解析和@RequestParam 的解析都是使用RequestParamMethodArgumentResolver这个类来解析
在这里插入图片描述
通过继承AbstractNamedValueMethodArgumentResolver 实现了HandlerMethodArgumentResolver接口具有了参数解析功能。
在这里插入图片描述
这里主要是从request域中解析参数值,最后创建webdatabinder 用binder做参数类型转换
在这里插入图片描述
这里创建databinder前面已经分析过了,
来到databinder 中
在这里插入图片描述
看 getTypeConverter()方法,简单参数类型,复杂类型主要是这里不同,
在这里插入图片描述
在这个方法里面会判断当前dababinder是否憨厚getTarget() 如果是简单类型target是null,如果是复杂类型则是 需要解析的实体,例如如果参数是user 则这里的target就是一个User实例,由于这里的target没有会走下面生成一个simpleTypeConverter。
继续看生成simpleTypeConverter过程
在这里插入图片描述
继续看 构造器
看到这里就明白了,里面依然构造了一个typeConverterDelegate,将类型转换工作交割typeConverterDelegate这个实例处理,和复杂对象的解析是一个路子。
在这里插入图片描述
在初始化之后又把conversionService交给了SimpleTypeConverter
在这里插入图片描述
进入方法里面直接查看真正的解析过程
在这里插入图片描述
直接用刚刚创建的typeConverterDelegate进行解析和beanwarpImpl一样的套路。
这里一样先找PropertyEditor如果有PropertyEditor则用自定义的PropertyEditor进行解析如果没有则找conversionservice进行解析,如果还没有则查找默认的PropertyEditor
在这里插入图片描述
在这里插入图片描述
点进去这个方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值