使用 @ControllerAdvice & ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体


1、Controller代码

以下是Controller查询方法源码:


  1. /**
  2. * controller
  3. *
  4. * @author yclimb
  5. * @date 2018/6/29.
  6. */
  7. @RestController
  8. @RequestMapping("/manage/user")
  9. public class TestController {
  10. private Logger logger = LoggerFactory.getLogger(TestController.class);
  11. /**
  12. * 通过会员id获取会员信息及详情
  13. *
  14. * @param id 会员id
  15. * @return app msg
  16. *
  17. * @author yclimb
  18. * @date 2018/6/29
  19. */
  20. @GetMapping("/edit/{id}")
  21. public AppMessage edit(@PathVariable Integer id) {
  22. if (null == id) {
  23. return AppMessage.error(-3, "会员ID不能为空");
  24. }
  25. // 查询会员对象
  26. User user = userService.queryById(id);
  27. if (user == null) {
  28. return AppMessage.error(-3, "根据会员ID未查询到对应会员");
  29. }
  30. return AppMessage.success(user);
  31. }
  32. }

2、拦截处理器

下面已经封装好了一个拦截处理类以供参考:

  1. package com.yclimb.test;
  2. import org.springframework.core.MethodParameter;
  3. import org.springframework.http.MediaType;
  4. import org.springframework.http.server.ServerHttpRequest;
  5. import org.springframework.http.server.ServerHttpResponse;
  6. import org.springframework.web.bind.annotation.ControllerAdvice;
  7. import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
  8. /**
  9. * 拦截Controller方法默认返回参数,统一处理返回值/响应体
  10. *
  11. * @author yclimb
  12. * @date 2018/6/29
  13. */
  14. @ControllerAdvice
  15. public class TestResponseBodyAdvice implements ResponseBodyAdvice {
  16. @Override
  17. public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
  18. System.out.println("TestResponseBodyAdvice==>beforeBodyWrite:" + o.toString() + ","
  19. + methodParameter);
  20. return o;
  21. }
  22. @Override
  23. public boolean supports(MethodParameter methodParameter, Class aClass) {
  24. return true;
  25. }
  26. }

3、测试方法

Controller:

ResponseBodyAdvice:

结语

到此本文就结束了,关注公众号查看更多推送!!!



使用 ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体的更多相关文章

  1. 利用Ajax调用controller方法并传递参数

    一.背景由于近期工作需要将人脸识别功能与选课系统结合,但是对前端知识了解的很少,只能边做边学了,因此在这边把遇到的一些坑说明一下,希望能帮助到像我一样的初学者 二.具体内容这里采用框架为MVC,如果想 ...

  2. 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

    接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...

  3. SpringMVC基础-controller方法中的参数注解

    @PathVariable  映射 URL 绑定的占位符 带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义 通过 ...

  4. 范型方法 & 范型参数 & 范型返回值

    Java范型类 public class FanXingClassTest { public static void main(String args[]){ Test<Integer> ...

  5. C++ 调用Python文件方法传递字典参数并接收返回值

    首先本地需要安装有Python环境,然后在c++工程中包含Python的头文件,引用Python的lib库. //python 初始化 Py_Initialize(); if (!Py_IsIniti ...

  6. SpringBoot统一处理返回结果和异常情况

    如果文章有帮助到你,还请点个赞或留下评论 原因 在springboot项目里我们希望接口返回的数据包含至少三个属性: code:请求接口的返回码,成功或者异常等返回编码,例如定义请求成功. messa ...

  7. SpringMVC的@RequestMapping和Controller方法返回值

    本节内容: @RequestMapping Controller方法返回值 一.@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映 ...

  8. springmvc中Controller方法的返回值

    1.1 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 1.2 返回void 在controller方法形参 ...

  9. SprimgMVC学习笔记(五)—— Controller方法返回值

    一.返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. /** * 查询商品列表 * @return */ @R ...

随机推荐

  1. 【Asp.net入门4-01】基本开发工具

  2. python文件加入python环境变量

    在python中,把一个python文件加入到python环境变量中,以方便其他python文件调用. 方式一: import sys sys.path.append(r'E:\syz\ly-code ...

  3. unity解析json的两种方式

    一直比较钟情于json,用来做数据交互,堪称完美!下面简单说一下unity使用C#脚本如何解析json数据吧. 一.写解析类,借助于JsonUtility.FromJson 直接给个例子吧 1.jso ...

  4. Java7的新特性

    原文出处:xixicat 序 本文主要讲Java7的新特性,相对于Java6而言,Java7增加了一些重要的特性,比如NIO2,不像Java6那么鸡肋,也算是一个重要的版本. 特性列表 suppres ...

  5. python---图表的使用

    一:使用预览 二:插件使用来源 Highcharts(本次使用) ECharts 三:插件的使用 HighCharts的简单上手 (一)后台传递数据 getHchart方法获取用户数据(用户名,数据列 ...

  6. Ubuntu如何同步网络时间

    解决方法: 1.安装ntpdate工具 apt-get install ntpdate 2.将系统时间与网络同步 ntpdate cn.pool.ntp.org 3.将时间写入硬件 hwclock - ...

  7. linq的语法和案例

    本篇逐一介绍linq各个关键字的用法(from,select,group,into等),本篇所有的案例都是用linqpad来完成的(官方地址:http://www.linqpad.net/),建议想学 ...

  8. bzoj千题计划151:bzoj1131: [POI2008]Sta

    http://www.lydsy.com/JudgeOnline/problem.php?id=1131 dp[i]=dp[fa[i]]-son[i]+n-son[i] #include<cst ...

  9. AT1983 BBQ Hard

    洛谷题目链接:BBQ Hard 题意翻译 有 n 个数对 \((A_i​; B_i​)\),求出 \[\sum_{i=1}^{n}\sum_{j=i + 1}^{n}{a_i+b_i+a_j+b_j ...

  10. Java写的数据库连接池

    原文地址: http://lgscofield.iteye.com/blog/1820521 import java.sql.*; import java.util.Enumeration; impo ...