前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot2.x系列教程(十六)SpringBoot之HttpMessageConverter原理详解

SpringBoot2.x系列教程(十六)SpringBoot之HttpMessageConverter原理详解

作者头像
程序新视界
发布2020-01-14 16:11:16
7450
发布2020-01-14 16:11:16
举报
文章被收录于专栏:丑胖侠丑胖侠

在前面章节中讲到的@RequestBody、@ResponseBody等注解,之所以可以进行Json与Java Bean之间的相互转换,就是因为HttpMessageConverter发挥着作用。

HttpMessageConverter

HTTP请求和响应是基于文本的,意味着浏览器和服务器通过文本进行通信,之所以文本会形成与Java对象之间进行相互转换,就是通过由合适的消息转换器进行操作的。同时,同一个对象就有可能出现多种不同的消息形式,比如json和xml。

当报文被发送到服务器,会被封装为一个ServletInputStream流,响应报文则是ServletOutputStream流。输入输出流中只能读取到原始的字符串报文。

在Spring Boot或Spring MVC之所以能够实现这一转换过程就是通过HttpMessageConverter接口来实现的。而这些实现细节一般对编程人员来说是处于屏蔽状态的。

源码解析

HttpMessageConverter接口源码:

代码语言:javascript
复制
public interface HttpMessageConverter<T> {

	boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);

	boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);

	List<MediaType> getSupportedMediaTypes();

	T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
			throws IOException, HttpMessageNotReadableException;

	void write(T t, @Nullable MediaType contentType, HttpOutputMessage 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HttpMessageConverter
  • 源码解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档