ControllerAdvice

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

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

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

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

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

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

/**
* SpringMVC统一异常处理
* 注:@ControllerAdvice为Controller层增强器,其只能处理Controller层抛出的异常;
* 由于代码间的层级调用机制 、异常的处理机制等,所以这里处理Controller层的异常,就相当于
* 处理了全局异常
* @author
*/ @RestControllerAdvice
public 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;

SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验的更多相关文章

  1. SpringBoot 全局处理以及注入请求参数

    后端接口,经常会用token获取对应的账号信息.于是考虑将这个步骤封装起来. 之前项目使用ThreadLocal去做这样的事情,但昨天看SpringBoot的官方文档,发现借助框架的功能也可以做这样的 ...

  2. 利用 Bean Validation 来简化接口请求参数校验

    团队新来了个校招实习生静静,相互交流后发现竟然是我母校同实验室的小学妹,小学妹很热情地认下了我这个失散多年的大湿哥,后来... 小学妹:大湿哥,咱们项目里的 Controller 怎么都看不到参数校验 ...

  3. springboot 全局异常处理

    springboot 全局异常处理 研究了半天springboot的全局异常处理,虽然还是需要再多整理一下,但是对于常见的404和500足以可以区分开,能够根据这两个异常分别处理 首先配置视图解析路径 ...

  4. Spring Boot 2.x基础教程:JSR-303实现请求参数校验

    请求参数的校验是很多新手开发非常容易犯错,或存在较多改进点的常见场景.比较常见的问题主要表现在以下几个方面: 仅依靠前端框架解决参数校验,缺失服务端的校验.这种情况常见于需要同时开发前后端的时候,虽然 ...

  5. SpringBoot 拦截器获取http请求参数

    SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...

  6. SpringBoot全局异常处理方式

    每个项目全局异常处理非常重要, 今天在处理项目架构的时候添加了一个全局异常处理. 大概三种异常情况: 一:在进入Controller之前,譬如请求一个不存在的地址,404错误. 二:在执行@Reque ...

  7. 一起来学SpringBoot(十七)优雅的参数校验

    参数校验在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动方法内代码显得冗长每次要看哪些参数 ...

  8. springboot统一异常处理类及注解参数为数组的写法

    统一异常处理类 package com.wdcloud.categoryserver.common.exception; import com.wdcloud.categoryserver.commo ...

  9. 【第二十三章】 springboot + 全局异常处理

    一.单个controller范围的异常处理 package com.xxx.secondboot.web; import org.springframework.web.bind.annotation ...

随机推荐

  1. bat脚本修改dns(判断系统版本)

    @echo off systeminfo if "%OS 名称%"=="%7%" goto windows7:windows7echo 正在设置本机主DNS , ...

  2. 序列化模块Serializer

    序列化组件: 知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) Serializer 序列化准备: 模型层:model ...

  3. 1)BS和CS区别

    (1)CS:  客户端服务器 BS: 浏览器和服务器 (2)二者区别: 微信就相当于  客户端服务器   同时 微信也有 网页版. BS灵活,不用下客户端,但是网页什么内容都有,就有可能将用户的信息泄 ...

  4. 20)PHP,数组的遍历

    然后开始使用这2个函数和while循环结构来实现数组遍历: 形式: reset($arr1); while ( list ($key, $value ) = each( $arr1) ) //从数组$ ...

  5. 00 - 准备 Anaconda 环境

    Anaconda 环境 官方下载安装包:https://www.anaconda.com/download/ Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管 ...

  6. Uncaught TypeError: Cannot read property 'querySelector' of null

    报错. 解决办法:把报错部分的js放到body后面

  7. CountingSort(计数排序)原理及C++代码实现

    计数排序是需要假设输入数据的排序之一,它假设输入元素是0到k区间内的一个整数,其中k为某个整数.当k=O(n)时,计数排序的时间复杂度为θ(n). 因为不是通过比较来排序,所以它的时间复杂度可以达到θ ...

  8. 3)小案例三,加乐前端入口index.php

    之前的代码没有什么改动,唯一改动的就是我在之前的目录结构中加了  index.php作为前端的入口文件 目前,我的文件目录关系是: 然后我的index.php代码内容是: <?php /** * ...

  9. Visual Studio 2017 Professional 下载

    可以进行Office 2013/2016 VSTO开发 安装平台:Win 7 SP1.Win 10. 下载: VisualStudio2017_Professional.rar

  10. HihoCode-1053-居民迁移

    解法: 一开始不会做,看到标签说是贪心加二分忽然就会了,二分是分的是人口最多居住点的人口,检查人口最多的居住点人口为mid是否可行.贪心是如果从左往右循环就尽量把人口往左迁移,如果从右往左循环就尽量把 ...