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

相关文章
|
16天前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
27 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
2天前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
12 0
|
4天前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
|
29天前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
57 4
|
16天前
|
JSON 数据格式
langchain 入门指南 - JSON 形式输出大模型的响应
langchain 入门指南 - JSON 形式输出大模型的响应
32 0
|
3月前
|
JSON 中间件 Go
基于框架的服务创建处理json响应
【6月更文挑战第22天】本文探索Go的Gin框架:高性能HTTP服务与路由。Gin默认用encoding/json处理JSON响应,但可选jsoniter加速。
50 7
基于框架的服务创建处理json响应
|
3月前
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
110 2
Spring Security 6.x OAuth2登录认证源码分析
|
2月前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
本文详细介绍了如何在Spring Boot项目中处理JSON数据的传输 Spring Boot默认使用Jackson作为JSON处理器,并通过`spring-boot-starter-web`依赖自动包含相关组件。文章还展示了如何配置Jackson处理null值,使其转换为空字符串。此外,文章比较了Jackson和FastJson的特点,并提供了FastJson的配置示例,展示了如何处理null值以适应不同应用场景。
|
3月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
39 3
|
3月前
|
存储 Java Spring
Spring IOC 源码分析之深入理解 IOC
Spring IOC 源码分析之深入理解 IOC
74 2
下一篇
云函数