文章目录

  • RestControllerAdvice
  • BasicErrorController
  • ResponseBodyAdvice
RestControllerAdvice
@RestControllerAdvice
public class ExceptionHandlerAdvice {@ExceptionHandler(value = ToolBoxException.class)public Ret<String> doBaseApiException(ToolBoxException e) {return Rets.failure(e.getMessage());}}
BasicErrorController
package com.ityu.bean.exception;import com.ityu.bean.enumeration.BizExceptionEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;@Controller
@Slf4j
public class AppErrorController extends BasicErrorController {public AppErrorController(ServerProperties errorAttributes) {super(new DefaultErrorAttributes(), errorAttributes.getError());}/*** 覆盖默认的Json响应*/@Overridepublic ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {Map<String, Object> body = getErrorAttributes(request,isIncludeStackTrace(request, MediaType.ALL));HttpStatus status = getStatus(request);//输出自定义的Json格式Map<String, Object> map = new HashMap<>();String msg = body.get("message") + "";if (msg.equals(BizExceptionEnum.TOKEN_INVALID.getMessage())) {map.put("code", BizExceptionEnum.TOKEN_INVALID.getCode());} else {map.put("code", -1);}map.put("msg", msg);map.put("status", true);map.put("data", "");//log.error(String.valueOf(StringUtil.getStrValue(request)));return new ResponseEntity<>(map, HttpStatus.valueOf(200));// return new ResponseEntity<>(map, status);}/*** 覆盖默认的HTML响应*/@Overridepublic ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {//请求的状态HttpStatus status = getStatus(request);response.setStatus(getStatus(request).value());Map<String, Object> model = getErrorAttributes(request,isIncludeStackTrace(request, MediaType.TEXT_HTML));ModelAndView modelAndView = resolveErrorView(request, response, status, model);//指定自定义的视图return (modelAndView == null ? new ModelAndView("error", model) : modelAndView);}
}
ResponseBodyAdvice
@RestControllerAdvice
public class ApiResBodyAdvice implements ResponseBodyAdvice {/*** 判断哪些需要拦截**/@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}/*** 拦截返回数据处理*/@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {//处理扩展字段return ApiResBodyAdviceKit.beforeBodyWrite(body);}}

springboot全局异常处理BasicErrorController和RestControllerAdvice相关推荐

  1. springboot全局异常处理_SpringBoot:如何优雅地处理全局异常

    之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Contro ...

  2. springboot 全局异常处理类

    目录标题 springboot 全局异常处理类 依赖 代码 springboot 全局异常处理类 依赖 <!-- Spring Boot Web 依赖 核心 --><dependen ...

  3. SpringBoot 全局异常处理

    下面首先来观察一个程序代码,例如:现在建立一个控制器,而后这个控制器自己抛出一个异常.@Controller public class MemberController extends Abstrac ...

  4. SpringBoot全局异常处理

    1.为什么要全局异常处理 在实际开发中,如果不处理统一处理异常,那么前端在调用后端提供的接口,就会处理各种的异常结构,对于前端来说那可谓是一场灾难,这对前后端的协作也不友好.比如后端路径:/api/v ...

  5. [SpringBoot]全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> 1. 全局异常处理 2. SpringBoot错误处理原理 3. SpringBoot定制错误页面 4. SpringBoot ...

  6. SpringBoot全局异常处理及前端请求参数校验

    SpringBoot全局异常捕获处理及参数校验 文章目录 SpringBoot全局异常捕获处理及参数校验 为什么要用全局异常处理? 如何进行全局异常捕获和处理? 统一结果封装 统一返回结果 枚举类 使 ...

  7. springBoot 全局异常处理 报错 : Could not resolve method parameter at index 0 in public .....

    在学习 springboot 的全局异常处理时   ,我写了一个处理异常类 @ControllerAdvice public class ErrorCatchController {@Exceptio ...

  8. springboot 全局异常处理 自定义mvc错误页面展示

    如下:所有的异常都会进入到这里.根据个人业务按需处理 全局异常处理 @ControllerAdvice public class ErrorAdviceController {//指定捕获对象@Exc ...

  9. springboot全局异常处理详解

    对于全局异常需要认识两个注解 @RestControllerAdvice,@ExceptionHandler 1. @RestControllerAdvice 组成:@ControllerAdvice ...

最新文章

  1. Windows如何 cmd 查找文件路径 开机启动 CMD语音播放 CMD切换到管理员!
  2. 视频动作识别--Convolutional Two-Stream Network Fusion for Video Action Recognition
  3. div+css如何让一行内的文字两端对齐?
  4. 关于Timer的用法,先简单记下,稍后编辑
  5. 中国各类基金资助项目英文翻译(中英文对照)
  6. C#中释放数据库连接资源
  7. Matlab2018a安装成功后,打开出现licensing error:-8523
  8. matlab利用双目图像视差进行三维重建
  9. 【问题】Nginx日志中request_body为空
  10. 一线城市的繁荣vs年轻人的梦想?
  11. Spring Cloud 快速入门指南(一)
  12. wince 德赛西威2413_德赛西威NAV262大众全系通用DVD导航产品介绍
  13. Ubuntu系统备份还原教程
  14. 爬虫漫游指南:浏览器指纹
  15. 毕设经典-人事档案管理系统(layer+SSM)-AOP介绍
  16. 2018年小米校招笔试题
  17. 元旦技术大礼包 - 2017金秋将要发布的PostgreSQL 10.0已装备了哪些核武器?
  18. 2017年最火的19个行业,你做哪行!
  19. 读书:孔庆东《笑书神侠》
  20. 【三维目标检测】Second 模型 (二)

热门文章

  1. USB core(一) - rh_queue_status与rh_call_control
  2. SpringBoot 接口数据加解密技巧
  3. 移动端UI一致性解决方案
  4. cncert/cc DDOS 清洗 流量清洗 IDC AFC AFD ICP
  5. CNCERT:2012年中国互联网网络安全态势综述
  6. idea使用lombok的时候无法找到log,编译时无法找到log
  7. 呼吸机氧电池的工作原理及性能检测
  8. 计算机软件监控器,上位监控计算机软件,Upper monitoring computer software,音标,读音,翻译,英文例句,英语词典...
  9. Java基础知识Day08---Scaner类
  10. Cloudera Manager拓展SPARK2-2.3.0.cloudera3-1.cdh5.6.0.p0.1-el6.parcel