HttpMessageConverter<T>的了解

发布时间 2023-05-26 19:01:11作者: 烤烤栗子

消息转换器的具体工作机制示意图

 SpringMVC处理json底层就是依靠HttpMessageConverter来实现的。

前台发来一个请求报文,根据请求报文的类型来选择一个实现了HttpinputMessage的接口的类来封装信息,然后根据请求头的Accept属性来选择对应的实现了HttpMessageConverter的接口的类来进行转换,然后打到SpringMVC的controller的对应的方法进行处理,处理好后根据响应头的Accept属性选择对应的HttpMessageConverter来进行转换,封装成HttpoutputMessage返回给响应报文。

处理 JSON-底层实现(HttpMessageConverter<T>)
1. 使用 HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入参中, 或将响应
结果转为对应类型的响应信息,Spring 提供了两种途径:
√ 使用 @RequestBody / @ResponseBody 对目标方法进行标注
√ 使用 HttpEntity<T> / ResponseEntity<T> 作为目标方法的入参或返回值
2. 当 控 制 器 处 理 方 法 使 用 到
@RequestBody/@ResponseBody 或
HttpEntity<T>/ResponseEntity<T> 时, Spring 首先根据请求头或响应头的 Accept 属性选择
匹配 的 HttpMessageConverter, 进而 根据参 数类型 或泛型 类型的 过滤得 到匹配 的
HttpMessageConverter, 若找不到可用的 HttpMessageConverter 将报错