- 2
- 0
- 约5.53千字
- 约 15页
- 2016-04-13 发布于浙江
- 举报
SpringMVC关于json、xml自动转换的原理研究
SpringMVC关于json、xml自动转换的原理研究
mvc:resources location=/static/ mapping=/static/**/mvc:annotation-driven/context:component-scan base-package=org.format.demo.controller /视图配置省略.....
pom中需要有以下依赖(Spring依赖及其他依赖不显示):
dependency groupIdorg.codehaus.jackson/groupId artifactIdjackson-core-asl/artifactId version1.9.13/version /dependency dependency groupIdorg.codehaus.jackson/groupId artifactIdjackson-mapper-asl/artifactId version1.9.13/version /dependency
这个依赖分别是json序列化的依赖。
ok。我们在Controller中添加一个method:
@RequestMapping(/)
@ResponseBody
public MapString, Object String, Object map = new HashMapString, Object();
map.put(list, employeeService.list());
return map;}
直接访问地址:
我们看到,短短几行配置。使用@ResponseBody注解之后,Controller返回的对象 自动被转换成对应的json数据,在这里不得不感叹SpringMVC的强大。
我们好像也没看到具体的配置,唯一看到的就是*-dispatcher.
那么spring到底是如何实现java对象到json对象的自动转换的呢? 为什么转换成了json数据,如果想转换成
源码分析
本文使用的spring版本是4.0.2。 ?
在讲解mvc:annotation-driven/这个配置之前,我们先了解下Spring的消息转换机制。@ResponseBody这个注解就是使用消息转换机制,最终通过json的转换器转换成json数据的。
HttpMessageConverter接口就是Spring提供的http消息转换接口。有关这方面的知识大家可以参考参考资料中的第二条链接,里面讲的很清楚。
下面开始分析mvc:annotation-driven/这句配置:
这句代码在spring中的解析类是:
在AnnotationDrivenBeanDefinitionParser源码的152行parse方法中:
分别实例化了RequestMappingHandlerMapping,ConfigurableWebBindingInitializer,RequestMappingHandlerAdapter等诸多类。
其中RequestMappingHandlerMapping和RequestMappingHandlerAdapter这两个类比较重要。
RequestMappingHandlerMapping处理请求映射的,处理@RequestMapping跟请求地址之间的关系。
RequestMappingHandlerAdapter是请求处理的适配器,也就是请求之后处理具体逻辑的执行,关系到哪个类的哪个方法以及转换器等工作,这个类是我们讲的重点,其中它的属性messageConverters是本文要讲的重点。
私有方法:getMessageConverters
从代码中我们可以,RequestMappingHandlerAdapter设置messageConverters的逻辑:
1.如果mvc:annotation-driven节点有子节点message-converters,那么它的转换器属性messageConverters也由这些子节点组成。
message-converters的子节点配置如下:
mvc:annotation-driven mvc:message-converters register-defaults=true bean class=org.example.MyHttpMessageConverter/ bean class=org.example.MyOtherHttpMessageConverter/ /mvc:message-converters/mvc:annotation-driven
?
2.m
您可能关注的文档
最近下载
- 浙江省杭州市拱墅区2023-2024学年四年级上学期语文期末试卷 解析版.pdf VIP
- CNAS-GC01-2017 《管理体系认证机构认证业务范围能力管理实施指南》.docx VIP
- 宜宾市2026届高三(一诊)思想政治试卷(含答案)原卷.pdf
- 患者坠床不良事件的RCA根本原因分析.pptx
- 《历史文化街区体检评估标准》.pdf VIP
- 《人工智能基础》期末考试试卷附答案.docx VIP
- 装备修理作业管理课件.pptx VIP
- 仓库5S管理实用知识培训-提升仓库管理水平的5S现场管理法.pptx VIP
- 2026年高考历史一轮复习:选择性必修1《国家制度与社会治理》高频考点复习提纲.docx VIP
- 变电站新备启动.ppt VIP
原创力文档

文档评论(0)