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

从springmvc源码看参数绑定注解和返回值注解

时间:2015-04-15 13:30:56      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:springmvc   注解   

在使用springmvc提供注解进行方法参数的绑定和方法返回值处理的时候,比如说有时候会报出400或500之类的错误;自以为掌握了注解的用法,但某些情况下进行参数绑定的扩展更为合理,等等这些情况都需要我们能深入地了解springmvc的内部实现。在进行错误调试的时候,根据不同的注解和返回值类型可深入到springmvc具体的实现类源代码进行跟踪查看,有助于我们用好springmvc。


1.进行方法参数的解析绑定的接口是HandlerMethodArgumentResolver

下面是一些具体的实现类,它们针对不同的注解实现不同的解析绑定功能:

1. RequestParamMethodArgumentResolver

 支持带有@RequestParam注解的参数或带有MultipartFile类型的参数

2. RequestParamMapMethodArgumentResolver

  支持带有@RequestParam注解的参数 && @RequestParam注解的属性value存在 && 参数类型是实现Map接口的属性

3. PathVariableMethodArgumentResolver

支持带有@PathVariable注解的参数 且如果参数实现了Map接口,@PathVariable注解需带有value属性

4. MatrixVariableMethodArgumentResolver

支持带有@MatrixVariable注解的参数 且如果参数实现了Map接口,@MatrixVariable注解需带有value属性 

5. RequestResponseBodyMethodProcessor

解析绑定带有@RequestBody的方法参数和带有@ResponseBody的方法返回值

6. ServletRequestMethodArgumentResolver

 参数类型是实现或继承或是WebRequest、ServletRequest、MultipartRequest、HttpSession、Principal、Locale、TimeZone、InputStream、Reader、HttpMethod这些类。

(这就是为何我们在Controller中的方法里添加一个HttpServletRequest参数,Spring会为我们自动获得HttpServletRequest对象的原因)

7. ServletResponseMethodArgumentResolver

 参数类型是实现或继承或是ServletResponse、OutputStream、Writer这些类

8. RedirectAttributesMethodArgumentResolver

 参数是实现了RedirectAttributes接口的类

9. HttpEntityMethodProcessor

 参数类型是HttpEntity

从名字我们也看的出来, 以Resolver结尾的是实现了HandlerMethodArgumentResolver接口的类,以Processor结尾的是实现了HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler的类。

 

2.方法返回值处理接口HandlerMethodReturnValueHandler

下面是一些具体的实现类,它们针对不同的注解或返回值类型实现不同的功能:

1. ModelAndViewMethodReturnValueHandler

返回值类型是ModelAndView或其子类

2. ModelMethodProcessor

返回值类型是Model或其子类

3. ViewMethodReturnValueHandler

返回值类型是View或其子类 

4. HttpHeadersReturnValueHandler

返回值类型是HttpHeaders或其子类  

5. ModelAttributeMethodProcessor

返回值有@ModelAttribute注解

6. ViewNameMethodReturnValueHandler

返回值是void或String


参考自:http://www.cnblogs.com/fangjian0423/p/springMVC-request-param-analysis.html

从springmvc源码看参数绑定注解和返回值注解

标签:springmvc   注解   

原文地址:http://blog.csdn.net/gufachongyang02/article/details/45057711

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