SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验

≡放荡痞女 提交于 2019-12-10 15:19:42

ControllerAdvice

指示带注释的类辅助“控制器”。

作为的特殊化@Component,允许通过类路径扫描自动检测实现类。

通常用于定义@ExceptionHandler, @InitBinder@ModelAttribute 适用于所有@RequestMapping方法的方法。

之一的annotations()basePackageClasses(), basePackages()或它的别名value() 可以被指定,以限定控制器,以协助的特定子集。当应用多个选择器时,将应用“或”逻辑-表示选定的控制器应至少匹配一个选择器。

默认行为(即,如果不使用任何选择器使用),带@ControllerAdvice注释的类将帮助所有已知的Controller。

请注意,这些检查是在运行时完成的,因此添加许多属性并使用多种策略可能会带来负面影响(复杂性,性能)。

/** * SpringMVC统一异常处理 * 注:@ControllerAdvice为Controller层增强器,其只能处理Controller层抛出的异常; * 由于代码间的层级调用机制  、异常的处理机制等,所以这里处理Controller层的异常,就相当于 * 处理了全局异常 * @author  */@RestControllerAdvicepublic class GlobalExceptionHandler {        @ExceptionHandler(MethodArgumentNotValidException.class)        public Object bindException(MethodArgumentNotValidException e) {            BindingResult bindingResult = e.getBindingResult();            StringBuilder sb=new StringBuilder();            sb.append("基础数据校验不通过:");            for (FieldError fieldError : bindingResult.getFieldErrors()) {                sb.append("\n");                sb.append(fieldError.getDefaultMessage());            }            Map<String,Object> result=new HashMap<>();            result.put("code","00000010");            result.put("data",sb.toString());            return result;        }}
@Length(min = 12,message = "订单号长度不正确")@NotBlank(message = "订单号不能为空")String orderId;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!