validation 参数校验和统一异常处理
文章目录
- 1. 引入依赖
- 2. 校验规则
- 3. 规则使用
- 4. 自定义异常类
- 5. 统一返回对象封装
- 6. 统一异常对象
- 7. 统一异常枚举
- 8. 前端form表单输入,自动触发校验
1. 引入依赖
<!--参数校验--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
2. 校验规则
@NotNull(message = "【每页页码】不能为空")private int page;@NotNull(message = "【每页条数】不能为空")@Max(value = 100,message = "【每页条数】不能超过100")
3. 规则使用
public CommonResp list(@Valid EbookQueryReq req) {}
4. 自定义异常类
package com.jiawa.wiki.controller;import com.jiawa.wiki.exception.BusinessException;
import com.jiawa.wiki.resp.CommonResp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;/*** 统一异常处理、数据预处理等*/
@ControllerAdvice
public class ControllerExceptionHandler {private static final Logger LOG = LoggerFactory.getLogger(ControllerExceptionHandler.class);/*** 校验异常统一处理* @param e* @return*/@ExceptionHandler(value = BindException.class)@ResponseBodypublic CommonResp validExceptionHandler(BindException e) {CommonResp commonResp = new CommonResp();LOG.warn("参数校验失败:{}", e.getBindingResult().getAllErrors().get(0).getDefaultMessage());commonResp.setSuccess(false);commonResp.setMessage(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());return commonResp;}
5. 统一返回对象封装
package com.jiawa.wiki.resp;public class CommonResp<T> {/*** 业务上的成功或失败*/private boolean success = true;/*** 返回信息*/private String message;/*** 返回泛型数据,自定义类型*/private T content;public boolean getSuccess() {return success;}public void setSuccess(boolean success) {this.success = success;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public T getContent() {return content;}public void setContent(T content) {this.content = content;}@Overridepublic String toString() {final StringBuffer sb = new StringBuffer("ResponseDto{");sb.append("success=").append(success);sb.append(", message='").append(message).append('\'');sb.append(", content=").append(content);sb.append('}');return sb.toString();}
}
6. 统一异常对象
package com.jiawa.wiki.exception;public class BusinessException extends RuntimeException{private BusinessExceptionCode code;public BusinessException (BusinessExceptionCode code) {super(code.getDesc());this.code = code;}public BusinessExceptionCode getCode() {return code;}public void setCode(BusinessExceptionCode code) {this.code = code;}/*** 不写入堆栈信息,提高性能*/@Overridepublic Throwable fillInStackTrace() {return this;}
}
7. 统一异常枚举
package com.jiawa.wiki.exception;public enum BusinessExceptionCode {USER_LOGIN_NAME_EXIST("登录名已存在"),LOGIN_USER_ERROR("用户名不存在或密码错误"),VOTE_REPEAT("您已点赞过"),;private String desc;BusinessExceptionCode(String desc) {this.desc = desc;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}
8. 前端form表单输入,自动触发校验
validation 参数校验和统一异常处理相关推荐
- 优雅书写Controller(参数验证+统一异常处理)
优雅书写Controller(参数验证+统一异常处理) 文章目录 最近开发了比较多的接口,因为没有可参考的案例,所以一开始一直按照我的理解进行开发.开发多了发现自己每个结果都写了相同的代码:try() ...
- 【Java】参数校验与统一异常处理
Java参数校验与统一异常处理 [前言]参数校验是接口开发不可或缺的环节,校验参数在以前基本上依靠大量的if/else控制语句来实现,后来可以使用反射+自定义注解的形式进行校验,但是复用性不是很好.其 ...
- springboot统一异常处理类及注解参数为数组的写法
springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...
- Spring Boot笔记-validation的使用及统一异常处理
这里以JPA后端分页为例,演示下validation的使用,及统一异常处理. 正常分页查询: page页是从0开始的,我这里返回的时候,给他加1了.这里要注意. 当出现异常的查询时: 及 这里的关键异 ...
- Java代码简洁-validation参数校验
validation参数校验 bean validation和hibernate validator参数校验 常用注解 1.导入依赖 2.测试 3.自定义消息模板 4.分组校验 5.级联校验 6.自定 ...
- ssm 异常捕获 统一处理_SSM 统一异常处理
SSM 统一异常处理 spring创建中, 处理异常可以使用try-cache处理, 也可以使用spring提供的统一异常处理 在spring中, 统一处理异常有2中方式 注解方式 @Exceptio ...
- ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战
背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...
- 使用Spring MVC统一异常处理实战
原文:http://blog.csdn.net/ufo2910628/article/details/40399539 1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处 ...
- trycatch抛出异常_Java生鲜电商平台架构中,如何统一异常处理及架构实战
补充说明:本文讲得比较细,所以篇幅较长.请认真读完,希望读完后能对统一异常处理有一个清晰的认识. 背景 软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异 ...
最新文章
- 如何实现对ELK各组件的监控?试试Metricbeat
- plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式
- Java 多线程 之 suspend挂起 线程实例
- 不小心执行了 rm -f,先别急着跑路
- 引用log4j.jar包后,出现告警
- navicat导出数据到oracle,使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中...
- 配置SQL Server AlwaysOn高可用性组
- 单线程为什么cpu慢_面试时说Redis是单线程的,被喷惨了!
- 北京网信金服PHP薪资_2020互联网大厂薪资曝光:程序员薪资将会变成白菜价?...
- 电力系统学习-电力系统及电力模型
- 格雷码和二进制之间的转换
- android libyuv库的使用
- python 爬取直播弹幕视频_Python获取B站直播间弹幕信息
- node.js(四 --- 全局对象)
- Unity 调用DLL
- matlab含未知数矩阵方程组,solve函数求解含有未知数的矩阵方程问题
- 2143.replace.favo.xrcch.com Dns劫持解决方案
- Dango之初识安装
- XShell免费版安装配置使用教程(保姆级)
- jQuery小游戏之锅打灰太郎