前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpMessageConverter的作用

HttpMessageConverter的作用

作者头像
只喝牛奶的杀手
发布2019-10-28 18:13:59
2.7K0
发布2019-10-28 18:13:59
举报
文章被收录于专栏:只喝牛奶的杀手

在SpringMVC或者SpringBoot的使用时,定义接口往往会用到RequestParam和RequestBody及ResponseBody这三个注解,RequestParam明确地告诉controller,这参数是从请求参数中获取。尤其POST请求要使用后两个的注解,对应着Controller方法的参数解析和返回值处理。在这里先不说RequestParam,因为对RequestParam的处理可以通过继承HttpServletRequestWrapper去做全局处理。

SpringMVC处理请求和响应时,支持多种类型的请求参数和返回类型,而此种功能的实现就需要对HTTP消息体和参数及返回值进行转换,为此SpringMVC提供了大量的转换类,所有转换类都实现了HttpMessageConverter接口。

参数解析器和返回值处理器在底层处理时,都是通过HttpMessageConverter进行转换。流程如下:

HttpMessageConverter我们常用的一般是Json和Xml,但是ProtoBuf变的越来越流行起来。Xml面向过去,Json面向现在,ProtoBuf面向未来。至于每个Converter是干嘛的这里就不解释了。

HttpMessageConverter只处理POST过来的RequestBody对象,比如List<T>,T等。我们一般会在序列化和反序列化的时候统一去处理对象中的Key的类型转换及value的处理。

代码语言:javascript
复制
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
      MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
      ObjectMapper objectMapper = new ObjectMapper();
      objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      SimpleModule simpleModule = new SimpleModule();
      simpleModule.addSerializer();//序列化
      simpleModule.addDeserializer();//反序列化
      objectMapper.registerModule(simpleModule);
      jackson2HttpMessageConverter.setObjectMapper(objectMapper);
      converters.add(jackson2HttpMessageConverter);
 }

SpringMVC 默认的解析工具Jackson。SpringBoot默认自带是jackson,网上有很多json转换速率的比对,但是Jackson已经够用了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档