使用 ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体
2018-11-09 11:24
2839 查看
使用
@ControllerAdvice&ResponseBodyAdvice拦截Controller方法默认返回参数,统一处理返回值/响应体
1、Controller代码
以下是Controller查询方法源码:
/** * controller * * @author yclimb * @date 2018/6/29. */ @RestController @RequestMapping("/manage/user") public class TestController { private Logger logger = LoggerFactory.getLogger(TestController.class); /** * 通过会员id获取会员信息及详情 * * @param id 会员id * @return app msg * * @author yclimb * @date 2018/6/29 */ @GetMapping("/edit/{id}") public AppMessage edit(@PathVariable Integer id) { if (null == id) { return AppMessage.error(-3, "会员ID不能为空"); } // 查询会员对象 User user = userService.queryById(id); if (user == null) { return AppMessage.error(-3, "根据会员ID未查询到对应会员"); } return AppMessage.success(user); } }
2、拦截处理器
下面已经封装好了一个拦截处理类以供参考:
package com.yclimb.test; 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; /** * 拦截Controller方法默认返回参数,统一处理返回值/响应体 * * @author yclimb * @date 2018/6/29 */ @ControllerAdvice public class TestResponseBodyAdvice implements ResponseBodyAdvice { @Override public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { System.out.println("TestResponseBodyAdvice==>beforeBodyWrite:" + o.toString() + "," + methodParameter); return o; } @Override public boolean supports(MethodParameter methodParameter, Class aClass) { return true; } }
3、测试方法
Controller:
ResponseBodyAdvice:
结语
到此本文就结束了,关注公众号查看更多推送!!!
相关文章推荐
- @ControllerAdvice,ResponseBodyAdvice 统一处理返回值/响应体
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
- Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理
- 使用AJAX调用Spring controller 并返回map对象,@ResponseBody 只能返回string的解决方案:
- springmvc使用@ResponseBody返回json乱码解决方法
- springmvc使用@ResponseBody返回json乱码解决方法
- Spring Boot 系列 - @ControllerAdvice & 拦截异常并统一处理
- 使用Spring mvc 的返回值拦截器对controller的返回值做拦截处理
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- @ControllerAdvice 拦截异常并统一处理
- spring mvc 自定义注解ResponseEncryptBody、RequestDecryptBody统一处理加密、解密数据,供移动端使用的rest服务
- SpringMVC中使用@ResponseBody注解标注业务方法,将业务方法的返回值做成json输出给页面
- android使用retrofit2混淆后onResponse方法返回的response.body() null object reference
- 使用 aop拦截 springMVC的controller并获取请求参数及返回结果
- Springboot使用了ResponseBodyAdvice处理返回值异常?
- SpringMVC使用@ResponseBody时返回json的日期格式处理为指定格式
- SpringMVC中Controller使用Validation的参数校验和统一处理参数异常
- Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理