当前位置:   article > 正文

spring-boot源码分析--响应json 返回值处理_responseentity返回值处理

responseentity返回值处理

1,spring-boot 引入web包后带有json的stater。

只需在类方法上面responseBody就可以。
  • 1

2,有返回值解析器returnValueHandlers进行处理。

3,在这里插入图片描述

执行完这个方法后,得到返回值,进行一些返回值安全判断后。

4,使用返回值处理器进行处理。

在这里插入图片描述

下面分析这个方法怎么处理:

1.首先调用了这个方法:
在这里插入图片描述
stepover --》stepinto
2.来到真正的处理方法中:
在这里插入图片描述
首先,选择一个对应的handler
返回值处理器会判断返回值处理器是否支持处理该类型返回值,支持就处理。
拓展:根据supportsReturnType 查看到返回值支持以下类型

view
ResponseEntity
StreamingResponseBody
HttpEntity
HttpHeaders
Callable
DeferredResult
ListenableFuture
CompletionStage
WebAsyncTask
hasMethodAnnotation(ModelAttribute.class) 被此注解标注的方法也可以被处理
被ResponseBody.class标注的方法返回值可被处理
etc.....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

被@ResponseBody标注的被次处理器处理 (requestresponsebodymethodprocessor)
在这里插入图片描述
找到对应处理器后执行该方法:
在这里插入图片描述
步入:
在这里插入图片描述

使用消息转换器进行写出操作。步入该方法-》

首先对返回值的类型进行一系列判断,
在这里插入图片描述
都不是则需要判断媒体类型,与浏览器进行内容协商
获得浏览器支持显示的内容类型
在这里插入图片描述

有如下7种:

在这里插入图片描述

进行协商,将能用的mediaType放入List

在这里插入图片描述

确定使用的类型为json

在这里插入图片描述

遍历所有messageConverter

在这里插入图片描述
这是所有converter:
在这里插入图片描述
每种messageConverter支持的返回值类型都不一样。
最终无论你是什么类型遇到最后一种直接转为json
调用objectWriter
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/619870
推荐阅读
相关标签
  

闽ICP备14008679号