SpringBoot全局异常与数据校验的方法
异常处理是每个项目中都绕不开的话题,那么如何优雅的处理异常,是本文的话题。本文将结合SpringBoot框架一起和大家探讨下。
要思考的问题
在现在的前后端交互中,通常都规范了接口返回方式,如返回的接口状态(成功|失败)以及要返回的数据在那个字段取,或者说失败了以后提示信息从接口哪里返回,因此,如果想做全局异常,并且异常发生后能准确的返回给前端解析,那么需要异常发生时返回给前端的格式与正常失败场景的格式一致。
项目建立
利用idea 工具,很容易的搭建一个SpringBoot项目,要引入的maven依赖如下:
很简单,除了加入web功能还加入了我们需要用到的JSR-303校验框架。
定义成功失败 返回码
定义接口返回响应实体
全局异常拦截和验证
定义自定义业务异常
编写全局异常控制器并对自定义异常做处理
编写controller模拟抛出业务异常
postMan模拟请求接口,进行验证
数据绑定异常处理
通常我们操作数据的时候,不仅前端需要进行数据校验,后端也应当进行拦截和进行相应的错误提示,
JSR-303校验框架也是我们的一种选择。
编写实体`User`,并对属性进行注解控制
全局异常控制类加入拦截
编写控制器
postMan模拟请求
不填写任何属性,模拟添加操作,准确进行拦截和报错
代码地址
代码地址:https://github.com/pengziliu/spring-boot-2.0-leaning
项目结构预览:
结尾
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码 hibernate validator(官方文档)提供了一套比较完善.便捷的验证实现方式. spring-boot-starter-web包里面有hibernate-validator包,不需要引用hibernate validator依赖. 二.hi
-
springboot+dubbo+validation 进行rpc参数校验的实现方法
注意:本文dubbo 版本 2.8.4 springboot 版本 2.0.4.RELEASE 项目结构 test-rest (前端消费着,controller 层,springboot+maven项目) test-api (dubbo服务 的 api ,只记录 service 接口和 model ,maven 项目) test-provider(dubbo 服务提供者,实际的数据库操作及业务层, springboot+maven项目 ) 背景: 使用springmvc做restful,使用du
-
Spring Boot 参数校验的具体实现方式
1.背景介绍 开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还挺工整的,只是看起来不是很优雅而已. 接下来,用Validation来改写这段 2.Spring Boot文档中的Validation 在Spring Boot的官网中,关于Validation只是简单的提了一句,如下 其实,Spring Validator和Hibernate Validator是两套Validator,可以混着用,这里我们用Hibernate Validator 3.
-
Spring Boot实现通用的接口参数校验
本文介绍基于 Spring Boot 和 JDK8 编写一个 AOP ,结合自定义注解实现通用的接口参数校验. 缘由 目前参数校验常用的方法是在实体类上添加注解,但对于不同的方法,所应用的校验规则也是不一样的,例如有一个 AccountVO 实体: public class AccountVO { private String name; // 姓名 private Integer age; // 年龄 } 假设存在这样一个业务:用户注册时需要填写姓名和年龄,用户登陆时只需要填写姓名就可以了.那
-
详解如何在Spring Boot项目使用参数校验
开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等.最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活. Bean Validation 1.0(JSR-303)是一个校验规范,在spring Boot项目由于自带了hibernate validator 5(http://hibernate.org/validator/)实现,所以我们可以非常方便的使用这个特性 . 核心的pom依赖:
-
Springboot集成JSR303参数校验的方法实现
JSR303 是一套 JavaBean 参数校验的标准 1.pom导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 2.注解类型 (1)空检查 @Null 验证对象是否为null @NotNull 验证对象是否不为null,
-
springboot使用Validator校验方式
我相信每个做开发的都听过这句"永远不要相信用户的输入",因此后台需要对用户的每个输入项都做校验:手机号.用户名.密码.邮箱.身份证号······这时候就需要hibernate-Validator校验框架登场了,下面介绍springboot如何使用hibernate-Validator进行校验. 引入pom WAIT ~~~ starter-web的依赖 惊不惊喜,意不意外?springboot已帮我们集成了,我们只管拿!来!用! 添加注解 @NotBlank(message = &qu
-
spring boot validation参数校验实例分析
本文实例讲述了spring boot validation参数校验.分享给大家供大家参考,具体如下: 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. Spring Boot自身对数据在服务端的校验有一个比较好的支持,它能将我们提交到服务端的数据按照我们事先的约定进行数据有效性验证. 1 pom依赖 <dependency> <groupId>org.springframework.boot</gr
-
SpringBoot 使用hibernate validator校验
本文将全面的介绍如何使用 validator 进行数据校验 本文源码: https://gitee.com/yintianwen7/taven-springboot-learning/tree/master/springboot-validate 准备工作 我们只需要引入 spring-boot-starter-web 包即可使用 1.常用注解 常用注解 2.简单的实体校验 public class CardDTO { @NotBlank private String cardId; @Size
-
Spring boot进行参数校验的方法实例详解
Spring boot开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空.整数值的范围.字符串的长度.日期.邮箱等等.Spring支持JSR-303 Bean Validation API,可以方便的进行校验. 使用注解进行校验 先定义一个form的封装对象 class RequestForm { @Size(min = 1, max = 5) private String name; public String getName() { return n
-
springboot使用校验框架validation校验的示例
b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的. Spring3支持JSR-303验证框架,JSR-303 是Java EE 6 中的一项子规范,叫做BeanValidation,官方参考实现是hibernate Validator(与Hibernate ORM 没有关系),JSR 303 用于对Java Bean 中的字段的值进行验证. Validator主要是校验用户提交的数据的合理性的,比如是否为
随机推荐
- 解决Access中分组报表的问题
- 解决.net项目中上传的图片或者文件太大无法上传问题
- 利用Ajax传递Xml文档
- JavaScript给每一个li节点绑定点击事件的实现方法
- 如何在smarty中增加类似foreach的功能自动加载数据
- 学习PHP Cookie处理函数
- 深入理解mysql SET NAMES和mysql(i)_set_charset的区别
- Android开发之Animations动画用法实例详解
- CentOS6.4上使用yum安装mysql
- php批量删除cookie的简单实现方法
- 详解Nginx中的geo模块与利用其配置负载均衡的示例
- 分页存储过程(三)在sqlserver中打造更加准确的分页结果
- javascript写的一个链表实现代码
- JQuery实现动态表格点击按钮表格增加一行
- Javascript 表单之间的数据传递代码
- jQuery实现手机上输入后隐藏键盘功能
- xampp中apache在windows7下无法启动的解决方法
- 收集的常用域名管理后台网址
- C++中的内存分区介绍
- java解析JSON数据详解