文章目录

  • 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 参数校验和统一异常处理相关推荐

  1. 优雅书写Controller(参数验证+统一异常处理)

    优雅书写Controller(参数验证+统一异常处理) 文章目录 最近开发了比较多的接口,因为没有可参考的案例,所以一开始一直按照我的理解进行开发.开发多了发现自己每个结果都写了相同的代码:try() ...

  2. 【Java】参数校验与统一异常处理

    Java参数校验与统一异常处理 [前言]参数校验是接口开发不可或缺的环节,校验参数在以前基本上依靠大量的if/else控制语句来实现,后来可以使用反射+自定义注解的形式进行校验,但是复用性不是很好.其 ...

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

    springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...

  4. Spring Boot笔记-validation的使用及统一异常处理

    这里以JPA后端分页为例,演示下validation的使用,及统一异常处理. 正常分页查询: page页是从0开始的,我这里返回的时候,给他加1了.这里要注意. 当出现异常的查询时: 及 这里的关键异 ...

  5. Java代码简洁-validation参数校验

    validation参数校验 bean validation和hibernate validator参数校验 常用注解 1.导入依赖 2.测试 3.自定义消息模板 4.分组校验 5.级联校验 6.自定 ...

  6. ssm 异常捕获 统一处理_SSM 统一异常处理

    SSM 统一异常处理 spring创建中, 处理异常可以使用try-cache处理, 也可以使用spring提供的统一异常处理 在spring中, 统一处理异常有2中方式 注解方式 @Exceptio ...

  7. ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战

    背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...

  8. 使用Spring MVC统一异常处理实战

    原文:http://blog.csdn.net/ufo2910628/article/details/40399539 1 描述  在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处 ...

  9. trycatch抛出异常_Java生鲜电商平台架构中,如何统一异常处理及架构实战

    补充说明:本文讲得比较细,所以篇幅较长.请认真读完,希望读完后能对统一异常处理有一个清晰的认识. 背景 软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异 ...

最新文章

  1. 如何实现对ELK各组件的监控?试试Metricbeat
  2. plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式
  3. Java 多线程 之 suspend挂起 线程实例
  4. 不小心执行了 rm -f,先别急着跑路
  5. 引用log4j.jar包后,出现告警
  6. navicat导出数据到oracle,使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中...
  7. 配置SQL Server AlwaysOn高可用性组
  8. 单线程为什么cpu慢_面试时说Redis是单线程的,被喷惨了!
  9. 北京网信金服PHP薪资_2020互联网大厂薪资曝光:程序员薪资将会变成白菜价?...
  10. 电力系统学习-电力系统及电力模型
  11. 格雷码和二进制之间的转换
  12. android libyuv库的使用
  13. python 爬取直播弹幕视频_Python获取B站直播间弹幕信息
  14. node.js(四 --- 全局对象)
  15. Unity 调用DLL
  16. matlab含未知数矩阵方程组,solve函数求解含有未知数的矩阵方程问题
  17. 2143.replace.favo.xrcch.com Dns劫持解决方案
  18. Dango之初识安装
  19. XShell免费版安装配置使用教程(保姆级)
  20. jQuery小游戏之锅打灰太郎

热门文章

  1. 加州理工学院对高超声速飞行的早期研究
  2. 专访图灵奖得主:完全自动驾驶是计算机接近人类智能的一大步
  3. AI算法连载14:统计之模型选择
  4. 6大设计原则之开闭原则
  5. 计数排序和桶排序 java代码实现
  6. 查看mysql表的数据和结构
  7. jquery添加div实现消息聊天框
  8. 使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用
  9. Jaeger插件开发及背后的思考
  10. 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统