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

简介: spring-boot源码分析--响应json 返回值处理

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

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

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.....

被@ResponseBody标注的被次处理器处理 (requestresponsebodymethodprocessor)

找到对应处理器后执行该方法:

步入:


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

首先对返回值的类型进行一系列判断,

都不是则需要判断媒体类型,与浏览器进行内容协商

获得浏览器支持显示的内容类型

有如下7种:

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

确定使用的类型为json

遍历所有messageConverter

这是所有converter:

每种messageConverter支持的返回值类型都不一样。

最终无论你是什么类型遇到最后一种直接转为json

调用objectWriter

相关文章
|
4月前
|
Java Spring
spring 源码分析——第二篇(ioc 注解方式)
spring 源码分析——第二篇(ioc 注解方式)
41 0
|
3月前
|
JSON 缓存 Java
Springboot 之 Filter 实现超大响应 JSON 数据压缩
Springboot 之 Filter 实现超大响应 JSON 数据压缩
33 0
|
4月前
|
XML Java 数据格式
Spring源码分析
Spring源码分析
|
3天前
|
JSON API 数据格式
python的request库如何拿到json的返回值
python的request库如何拿到json的返回值
7 0
|
4月前
|
安全 前端开发 Java
Spring Security 自定义异常失效?从源码分析到解决方案
Spring Security 自定义异常失效?从源码分析到解决方案
|
1月前
|
JSON JavaScript 前端开发
如何在Python中解析JSON响应?
【2月更文挑战第26天】【2月更文挑战第92篇】如何在Python中解析JSON响应?
|
5月前
|
Java 测试技术 API
源码分析系列教程(02) - 手写Spring事务框架
源码分析系列教程(02) - 手写Spring事务框架
52 0
|
6月前
|
JSON 前端开发 Java
构建健壮的Spring MVC应用:JSON响应与异常处理
构建健壮的Spring MVC应用:JSON响应与异常处理
35 0
|
2月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring mvc 响应
【JavaEE进阶】 关于Spring mvc 响应
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo 第四节: Spring与Dubbo整合原理与源码分析
DubboConfigConfigurationRegistrar的主要作⽤就是对propties⽂件进⾏解析并根据不同的配置项项⽣成对应类型的Bean对象。