关于@ResponseBody
(2015-03-04 20:53:08) 标签: 佛学 |
简介
@ResponseBody
作用:
使用时机:
HttpMessageConverter接口
默认给AnnotationMethodHandlerA
ByteArrayHttpMessageConv erter
StringHttpMessageConvert er
ResourceHttpMessageConve rter
SourceHttpMessageConvert er
XmlAwareFormHttpMessageC onverter
Jaxb2RootElementHttpMess ageConverter
MappingJacksonHttpMessag eConverter
Spring是如何寻找最佳的HttpMessageConverter
1 首先获取注册的所有HttpMessageConverter集合
2 然后客户端的请求header中寻找客户端可接收的类型,比如 Accept application/json,application/xml等,组成一个集合
3 所有的HttpMessageConverter 都有canRead和canWrite方法 返回值都是boolean,看这个HttpMessageConverter是否支持 当前请求的读与写,读对应@RequestBody注解, 写对应@ResponseBody注解
4 遍历HttpMessageConverter集合与前面获取可接受类型进行匹配,如果匹配直接使用当前第一个匹配的 HttpMessageConverter,然后return(一般是通过Accept和返回值对象的类型进行匹配)
例如
StringHttpMessageConvert er
支持String , Accept所有类型
MappingJacksonHttpMessag eConverter
支持Map List 实体对象等等 ,Accept:application/json
想了解更多可以参见链接:http://blog.youkuaiyun.com/walkerjong/article/details/7520896