目录

1、ResponseBodyAdvice

2、BaseResult


1、ResponseBodyAdvice

/*** 返回结果统一处理*/
@RestControllerAdvice(basePackages = {"com.xx"})
public class ResponseControllerAdvice implements ResponseBodyAdvice<Object> {/**** 1、如果返回类型是BaseResult类型,则返回true。返回true就直接结束了* 2、如果不是BaseResult类型,会进入到beforeBodyWrite这个方法内部。* @param returnType* @param aClass* @return*/@Overridepublic boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> aClass) {// 如果接口返回的类型本身就是BaseResult那就没有必要进行额外的操作,返回falsereturn !returnType.getGenericParameterType().equals(BaseResult.class);}@Overridepublic Object beforeBodyWrite(Object data, MethodParameter returnType, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest request, ServerHttpResponse response) {// String类型不能直接包装,所以要进行些特别的处理if (returnType.getGenericParameterType().equals(String.class)) {ObjectMapper objectMapper = new ObjectMapper();try {// 将数据包装在BaseResult里后,再转换为json字符串响应给前端return objectMapper.writeValueAsString(new BaseResult(data));} catch (JsonProcessingException e) {throw new APIException("返回String类型错误");}}// 将原本的数据包装在ResultVO里return new BaseResult(data);}
}

2、BaseResult

public class BaseResult<T> {/*** 请求状态*/private Integer httpCode;/*** 状态短语*/private String reasonPhrase;/*** 返回数据*/private T data;/*** 额外数据*/private Object extraData;/*** 提示信息*/private String message;//getter  setter方法}

springboot项目使用advice做统一返回相关推荐

  1. springboot优雅地统一返回格式

    web后端开发,统一后端数据的返回格式是每个项目都应该做的,得益于springboot的方法拦截,因此基于springboot可以非常优雅地统一返回的数据格式,以下是实现代码(演示的返回格式:{cod ...

  2. Java全局统一返回处理

    新项目中不希望每次返回参数还要重新封装再返回,希望直接将查询数据或者返回数据统一定义进行返回,所以将新项目中的全局统一返回配置记录,备忘.同时分享给有需要的码友.(例:查询出来的对象集合直接返回,会统 ...

  3. Springboot项目启动前执行数据库初始化脚本

    背景:项目里面遇到了要在springboot项目启动前做数据库初始化的需求.总结一下几种方案: 1.使用flywaydb,启动工程的时候同时初始化脚本.集成倒是不难,主要是要解决bean的顺序加载问题 ...

  4. Springboot项目全局异常统一处理

    最近在做项目时需要对异常进行全局统一处理,主要是一些分类入库以及记录日志等,因为项目是基于Springboot的,所以去网络上找了一些博客文档,然后再结合项目本身的一些特殊需求做了些许改造,现在记录下 ...

  5. SSM8==纯注解SSM项目:实现单表CRUD、事务、自定义异常和统一异常处理、RESTFUL风格接口、统一返回值格式(状态码、内容、消息)、JSON传参、axios、vue.js、elementUI

    环境:IDEA2021+JDK8+MAVEN3.8+TOMCAT7插件 前端:axios.vue.js.elementUI 后端:见POM.XML相关依赖,主要有数据库MySQL5.7 ,数据源Dru ...

  6. java中飞飞检查异常_Springboot项目如何在controller层统一返回数据以及处理异常

    在开发项目中,对于controller返回数据同时返回可能大家都能够做到.也就是定义一个相应类,里面有code, msg,content(或data). 在此基础上可能还会再封装以下,搞个基础cont ...

  7. SpringBoot统一返回处理出现cannot be cast to java.lang.String异常

    SpringBoot统一返回处理出现cannot be cast to java.lang.String异常 一 问题出现背景: 二 解决方案 三 异常原因分析 原因: 源码详细分析: 正常返回: 返 ...

  8. SpringBoot 项目 返回时间 日期、格式不正确 解决办法

    文章目录 SpringBoot 项目返回时间格式不正确 解决办法 1.遇到问题 2.解决方法 (1)问题所在 (2)如何解决 (3)效果 SpringBoot 项目返回时间格式不正确 解决办法   今 ...

  9. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

最新文章

  1. vba手机号码归属_Android手机号码归属地的查询
  2. 阿里云上创建个人网站
  3. java 性能 排序_Java常用排序算法及性能测试集合
  4. 【原创】分布式之redis复习精讲
  5. html中input后的报错信息,js 监测from表单中的input和select,时时监测,没有输入或选择信息报错,不允许提交数据...
  6. java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现
  7. linux 内核 睡眠,linux内核对S3C2410睡眠模式的支持有哪些?
  8. 计算机网络基础大学教材,《计算机网络技术及应用——大学计算机基础教育规划教材》低价购书_教材教辅考试_孔网...
  9. MongoDB 用户管理
  10. Java阶段2-02JS:07JS中的事件
  11. JavaScript 败北,TypeScript 大势所趋?
  12. pass 软件_怎么用电脑剪辑音乐?用什么剪辑软件好?
  13. 星星评价控件android开发_Android自定义View,评分星星控件(RatingBar)
  14. java时间往后一天_往后余生,不能再陪你了
  15. python自动化交易通达信_通达信实现自动交易系统
  16. sudo rosdep init 出现 ERROR: cannot download default sources list from:错误解决方法
  17. 小米游戏本bios_年轻人的第一台游戏本?——小米游戏本2019评测
  18. laravel的pluck用法
  19. 传小米第一款车售价超30万元;苹果操作系统首次打败安卓,市场份额超过50%;TensorFlow 2.8.3 发布|极客头条
  20. 最新微信知识付费小程序源码吾爱纯净版+带教程

热门文章

  1. vue-element-admin 修改默认的全局字体尺寸为mini
  2. Linux Weblogic 10.3.6安装和漏洞补丁过程
  3. Random Walk(随机行走)
  4. ROWNUM 与 ROW_NUMBER()OVER() 的区别
  5. ArcGIS9.3的注册码
  6. 红米note5解锁教程_红米Note5解锁bl教程_红米Note5获取解锁码进行一键解锁的方法...
  7. JS键盘对应Code
  8. 计算机工程陶瓷,捏陶瓷之形,赏中华之美
  9. 【全流程】从头在树莓派4B上部署自己训练的yolov5模型(配合NCS2加速)
  10. 分数问题的各种语言描述