- 5
- 0
- 约5.53千字
- 约 15页
- 2017-05-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
您可能关注的文档
- Silabs C851F850 BLDC马达参考设计.docx
- Silverligt 2.5D RPG游戏技巧与特效处理:(十九)基于WCF的注册与登录.docx
- SHP-250低温化培养箱和人工光照培养箱价格.docx
- Simple, Pactical Color Theory-色谱.doc
- Simulink在压控制系统仿真中的应用.doc
- SingaporeApplication Process.doc
- SIMOTION 在板带在线激光焊机中的应用.doc
- SL-5088PC埋地管线外防腐状况综合检测评估系统.doc
- SJB-030 #机组封闭母线安装作业指导书.doc
- SL-ZN01计算控制智能化液压传动综合实验台.doc
最近下载
- 制造业信息化战略规划实施与优化-PDM.docx VIP
- 那智不二越机器人flexgui toolbox操作说明书.pdf VIP
- 智慧工厂-智慧工厂解决方案.docx VIP
- 高中化学解题方法归纳:和量法.doc VIP
- 译林牛津新版高中英语(必修1-3)单词表.pdf VIP
- 包装有限公司分切机安全风险分级清单.docx VIP
- 重庆市西南大学附属中学2025届高三下学期二诊模拟考试物理试卷 含解析.docx VIP
- 【高中英语】《星火英语同步词汇》抗遗忘速记手册.docx VIP
- 成都市锦江区2026届初三一诊(暨期末考试)数学试卷(含答案).docx
- 三坐标 培训教程.pptx VIP
原创力文档

文档评论(0)