【Spring Boot】统一数据返回
目录统一数据返回一. 概念二.实现统一数据返回2.1 重写responseAdvice方法2.2 重写beforeBodyWriter方法三. 特殊类型-String的处理四. 全部代码统一数据返回一. 概念其实统一数据返回是运用了AOP对某一类事情的集中处理的思维简单概括就是在我们进行前后端数据交互的时候能够让后端的数据进行统一的打包封装返回给前端便于前后端的数据处理。二.实现统一数据返回其实统一数据返回非常简单在实现时要加入类注解ControllerAdvice(这是一个表示控制通知的注解在接下来的统一异常处理也要运用到)在添加类注解后还要在实现ResponseBodyAdvice接口然后重写接口的responseAdvice接口和beforeBodyWriter方法即可实现。添加类注解ControllerAdvice实现接口ResponseBodyAdvice重写responseAdvice方法重写beforeBodyWriter方法特殊数据类型特殊处理String2.1 重写responseAdvice方法responseAdvice方法如下Override public boolean supports(MethodParameter returnType, Class converterType) { return true; }可以看到重写该方法主要返回的是Boolean数据类型返回false表示不执行统一返回返回true表示对于所有的数据类型都进行数据统一返回。supports方法:判断是否要执行beforeBodyWrite方法.true为执行,false不执行.通过该方法可以选择哪些类或哪些方法的response要进行处理,其他的不进行处理2.2 重写beforeBodyWriter方法beforeBodyWriter方法如下beforeBodyWrite方法:对response方法进行具体操作处理其中的参数body最为重要如果想要对统一后的数据进行格式的转换直接转换body的格式就行因为这里的body代指了所有的数据格式。三. 特殊类型-String的处理在经过多次不同的数据类型测试后发现其它类型就可以顺利返回而String类型却返回不正确。对于String的数据类型如果想要返回我们要先引入ObjectMapper通过调用ObjeceMapper的writeValueAsString()方法来把body的数据格式给转换成Json格式然后再次进行统一返回即可。进行数据转换的代码如下private static ObjectMapper mapper new ObjectMapper(); Override public Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType, Class selectedConverterType, ServerHttpRequestrequest, ServerHttpResponse response) { //如果返回结果为String类型, 使?SpringBoot内置提供的Jackson来实现信息的序列化 if (body instanceof String){ return mapper.writeValueAsString(Result.success(body)); } }四. 全部代码import com.example.demo.model.Result; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; Slf4j ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice { private static ObjectMapper mapper new ObjectMapper(); Override public boolean supports(MethodParameter returnType, Class converterType) { return true; } SneakyThrows Override public Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { //返回结果更加灵活 if (body instanceof Result){ return body; } //如果返回结果为String类型, 使?SpringBoot内置提供的Jackson来实现信息的序列化 if (body instanceof String){ return mapper.writeValueAsString(Result.success(body)); } return Result.success(body); } }方便前端程序员更好的接收和解析后端数据接口返回的数据降低前端程序员和后端程序员的沟通成本,按照某个格式实现就可以了,因为所有接口都是这样返回的.有利于项目统数据的维护和修改.有利于后端技术部门的统规范的标准制定,不会出现稀奇古怪的返回内容.

相关新闻

Java和Python程序员速成大模型开发:超全实战指南,不看后悔!

Java和Python程序员速成大模型开发:超全实战指南,不看后悔!

注意不是标题党,这篇文章会告诉你一个Java程序员怎么去转大模型开发,同样也会告诉你一个Python程序员怎么转大模型开发。当然应该怎么走,你可能直接去找大模型,然后问:Java程序员怎么去转大模型开发 or Python程序员怎…

2026/7/5 7:09:17 阅读更多 →
drm DMA-BUF/PRIME

drm DMA-BUF/PRIME

为什么需要 DMA-BUF/PRIME?传统显存缓冲区(如 DRM framebuffer)被单个驱动 / 进程独占,跨进程 / 跨 GPU 传输数据时需要CPU 拷贝(从显存→内存→另一块显存),效率极低。DMA-BUF 本质是一个跨驱动…

2026/7/5 18:52:10 阅读更多 →
模型大脑可实时更新!用文本一键重塑模型记忆,低延迟按需即时更新

模型大脑可实时更新!用文本一键重塑模型记忆,低延迟按需即时更新

给大模型喂一份文档或一段指令,就能在几毫秒内化为它的永久记忆与专属技能。当前的大型语言模型在长效记忆和持续适配方面面临巨大挑战。Sakana AI提出利用超网络生成即插即用的低秩自适应模块(LoRA)。新技术能将文档瞬间转化为模型内在记忆&…

2026/7/4 8:31:43 阅读更多 →

最新新闻

STM32F042C6与KMX63实现低成本手势控制HMI方案

STM32F042C6与KMX63实现低成本手势控制HMI方案

1. 项目背景与核心目标KMX63与STM32F042C6的组合在嵌入式人机界面开发领域正逐渐成为性价比极高的解决方案。作为一名长期从事工业控制设备开发的工程师,我发现这套组合特别适合需要快速响应且成本敏感的场景。KMX63作为一款六轴运动传感器(三轴加速度计…

2026/7/6 7:01:04 阅读更多 →
番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为无法离线阅读番茄小说而烦恼吗&#xff…

2026/7/6 6:57:03 阅读更多 →
PCF8591与PIC18F46K80的信号转换系统设计与优化

PCF8591与PIC18F46K80的信号转换系统设计与优化

1. PCF8591与PIC18F46K80的信号转换系统概述在嵌入式系统开发中,模拟信号与数字信号的相互转换是常见需求。PCF8591作为一款集成了ADC和DAC功能的芯片,配合PIC18F46K80这款高性能8位单片机,可以构建一个灵活的信号处理系统。这个组合特别适合…

2026/7/6 6:57:02 阅读更多 →
参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现 数据分析的核心任务之一是通过样本数据推断总体特征。在这个过程中,统计检验方法的选择直接影响结论的可靠性。参数检验和非参数检验作为两大主流方法,各自适用于不同的数…

2026/7/6 6:53:01 阅读更多 →
Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向

Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向

Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向在当代自然语言处理领域,情感分析技术已成为理解文本深层含义的重要工具。本文将带您用Python 3.12和BERT模型,对经典文本《母亲》进行专业级情感倾向解析。不同于传统的人…

2026/7/6 6:53:01 阅读更多 →
LCD 液晶屏驱动时序详解:以 800x480 分辨率为例,配置 VBP/VFP/HBP/HFP 4 个关键参数

LCD 液晶屏驱动时序详解:以 800x480 分辨率为例,配置 VBP/VFP/HBP/HFP 4 个关键参数

LCD 液晶屏驱动时序深度解析:800x480 分辨率实战配置指南1. 液晶显示技术基础与驱动原理液晶显示器(LCD)作为现代电子设备最常用的显示技术之一,其核心在于通过电场精确控制液晶分子的排列状态。当我们在嵌入式系统中使用LCD时&am…

2026/7/6 6:53:01 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻