码迷,mamicode.com
首页 > 编程语言 > 详细

springmvc 参数转换

时间:2017-07-10 17:55:45      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:参数转换

题外:

spring3.1后对注解使用的handlermapping和adapter是RequestMappingHandlerMapping 和 处理器适配器RequestMappingHandlerAdapter,之前是DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter

题内:

之前通过url找到对应的类的处理方法,然后需要将报文中的参数转换为处理方法需要的参数,具体实现是靠adapter中的解析器实现的。adapter对应参数的解析,也是先注册解析器,然后判断那个解析器适合就用哪个,这些解析器可以自己构建,系统也提供一下默认的,通过getDefaultArgumentResolvers获得。每个解析器的实现类都会实现supportsParameter方法,用于判断是否支持处理方法中的参数。比如参数上有@requestbody,则RequestResponseBodyMethodProcessor这个解析器会被选中,这个解析器没有用databinder去做参数类型的转换(报文中的参数类型转换为处理方法中的参数类型),而是使用HttpMessageConverter作为转换器,用户可以注册各种实现了httpmesageConverter接口的类用于类型转换,当然系统也提供了一下默认实现类。一般@requestbody用于复杂类型的转换,入json、xml。又如参数上有@requestpara,他会选择RequestParamMethodArgumentResolver,这个解析器的转换器是databinder(Conversionservice),一般用于简单类型的转换,比如form,它一般是先从request.getParameter获取对应参数的字符串值,然后通过转换器进行转换。

转换器的选择是根据报文content-type和目标类型来匹配合适的转换器()

springmvc 参数转换

标签:参数转换

原文地址:http://2839840.blog.51cto.com/2829840/1945969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!