博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@ResponseBody和Json序列化处理流程
阅读量:6815 次
发布时间:2019-06-26

本文共 1081 字,大约阅读时间需要 3 分钟。

hot3.png

##@ResponseBody的处理##

  1. RequestMappingHandlerAdapter对handler进行调用,ServletInvocableHandlerMethod执行实际的调用.调用之后会使用HandlerMethodReturnValueHandlerComposite对返回值进行处理.

  2. HandlerMethodReturnValueHandlerComposite中其实包含了一个HandlerMethodReturnValueHandler的列表,遍历列表找出支持当前返回类型的(supportsReturnType),然后调用其handleReturnValue方法.

  3. RequestResponseBodyMethodProcessor就是上述列表中的一个HandlerMethodReturnValueHandler,其supportsReturnType如下:

    @Overridepublic boolean supportsReturnType(MethodParameter returnType) {	return ((AnnotationUtils.findAnnotation(returnType.getContainingClass(), ResponseBody.class) != null) ||			(returnType.getMethodAnnotation(ResponseBody.class) != null));}

    这里出现了我们期待已久的@ResponseBody.

##Json的序列化##

  1. RequestResponseBodyMethodProcessor包含了从RequestMappingHandlerAdapter传过来的HttpMessageConverter列表.其handleReturnValue方法逻辑为:遍历HttpMessageConverter列表列表,找到可用的HttpMessageConverter(通过canWrite方法),然后调用HttpMessageConverterwrite的方法,对handler的结果进行处理.
  2. MappingJackson2HttpMessageConverter是第上一步列表中的一个HttpMessageConverter子类,负责json的序列化和反序列化.其中的序列化方法就是调用ObjectMapper进行处理的.

转载于:https://my.oschina.net/huanger/blog/373632

你可能感兴趣的文章
python核心编程:学习笔记4--函数和函数式编程
查看>>
CentOS7基于NFS服务的文件共享
查看>>
Linux passwd文件被清空
查看>>
Python OpenCV学习笔记之:图像阈值操作
查看>>
7月第1周中国.COM总量净增5.1万个 美国净减5.3万
查看>>
国内域名商.wang总量TOP10:易名中国跻身上榜
查看>>
5月钓鱼网站简报:共处理钓鱼网站2483个 环比下降
查看>>
10月国内网民上网时间分布:晚上8点出现峰值6.42%
查看>>
Echarts 基本设置 设置图表位置
查看>>
AliOS Things网络适配框架 - SAL
查看>>
Hystrix之外健壮微服务的新选择:Sentinel 发布首个生产版本
查看>>
数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组
查看>>
缓存服务varnish
查看>>
配置电信网通双线双IP的解决办法(Linux Ip Route2,基于源地址进行路由选择)
查看>>
Python常用模块汇总
查看>>
Java的类加载机制 为什么会出现锁机制?
查看>>
sa提开放系统下的虚拟新贵Virtualbox权技巧之xp_regwrite替换sethc.exe
查看>>
SpringBoot开发案例之整合Dubbo提供者(一)
查看>>
变态的程序
查看>>
腾讯抄你肿么办 ?
查看>>