HttpMessageConverter-spring(4.3.10) 学习笔记

HttpMessageConverter-spring(4.3.10) 学习笔记

概述

HttpMessageConverter

  • read—->HttpMessageConverter支持将HttpInputMessage转为T(根据canRead/mediaType)
  • write—->HttpMessageConverter支持将T转为HttpOutputMessage(根据canWrite/mediaType)

普通对象转换器—->byte/string

  • ByteArrayHttpMessageConverter—->AbstractHttpMessageConverter—->HttpMessageConverter
    • AbstractHttpMessageConverter提供supportedMediaTypes存储,defaultCharset存储,
      • 提供supports方法用于子类判断对象T是否支持,提供readInternal子类覆写
      • 提供writeInternal子类覆写(在write方法写之前,会附加默认content-type/content-length头信息)
    • ByteArrayHttpMessageConverter提供byte[]与http消息的转换
      • 默认优先支持application/octet-stream以及/
      • supports—->byte[].class == clazz
      • 通过ByteArrayOutputStream对象进行字节流的转换
  • StringHttpMessageConverter—->AbstractHttpMessageConverter—->HttpMessageConverter
    • 默认优先支持text/plain以及/
    • supports—->String.class == clazz
    • 通过StreamUtils工具进行字节码与字符串的转换

泛型对象转换器—-json

  • GsonHttpMessageConverter—->AbstractGenericHttpMessageConverter—->GenericHttpMessageConverter—->HttpMessageConverter
    • GenericHttpMessageConverter提供支持泛型信息(java.lang.reflect.Type)的canRead/read/canWrite/write
    • AbstractGenericHttpMessageConverter提供按照mediaType进行消息的转换机制,提供泛型信息的writeInternal
    • GsonHttpMessageConverter
      • 利用Gson按照UTF-8编解码,支持application/json,application/*+json头信息
      • read—->readTypeToken—->this.gson.fromJson(json, token.getType())
      • write附加完相应的头信息后,writeInternal利用this.gson.toJson(o, type, writer)写入转换的T对象
  • MappingJackson2HttpMessageConverter—->AbstractJackson2HttpMessageConverter—->AbstractGenericHttpMessageConverter—->GenericHttpMessageConverter—->HttpMessageConverter
    • MappingJackson2HttpMessageConverter提供与gson等同的转换功能

EnableWebMvc—->启用WebMvcConfigurationSupport支持,添加一系列mvc支持

  • HandlerMapping/HandlerAdapter/HandlerExceptionResolverComposite/HttpMessageConverter等
  • WebMvcConfigurationSupport.addDefaultHttpMessageConverters添加如下转换器
    • ByteArrayHttpMessageConverter/StringHttpMessageConverter/ResourceHttpMessageConverter
    • SourceHttpMessageConverter/AllEncompassingFormHttpMessageConverter
    • MappingJackson2HttpMessageConverter或者GsonHttpMessageConverter

RequestResponseBodyMethodProcessor—->利用HttpMessageConverter解析RequestBody与ResponseBody标示的参数与返回值

  • AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters利用转换器处理消息与Java对象映射

测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值