参数的合法性直接影响到程序的安全和性能,因此在进行相关操作前必须检测对象是否为null,是否为blank,是否被初始化等等。

我们先来看看SpringBoot 是如何来检验参数的。

验证总是摆在第一位。

再来分析下Assert 类。 Assert  其实是一个非常简单的工具类。

Assert 类作为一个工具类,不应该被实例化, 因此该类使用 abstract 进行修饰。 没错这就是经常遇到的面试题目, abstract 类不能被实例化。

除此之外 将构造方法使用 private 进行修饰也可以防止类被实例化,这也是常用的编程技巧之一。

Assert 类在SpringBoot 项目中被广泛使用。

为啥使用Assert 类? 因为使用Assert 能使得代码更加简洁明。三行代码变成一行代码,并且Controller 类不需要依赖具体的Exception 类,少依赖一种Exception, import语句减少一行。

@RequestMapping("edit")

@RequiresPermissions(value = "fsdd-2")

public String edit(@RequestParam @NonNull Long id, Model model) {

Classify classify = classifyService.findById(id);

/* if(classify == null){

throw new EntityNotFoundException("被修改的分类不能为空" + id);

}*/

Assert.notNullEntity(classify, "被修改的分类不能为空" + id);

model.addAttribute("classify", classify);

return "manage/ClassifyController/edit";

}

修改某条记录时 , id 参数是必须的,并且id不能为空, 并且根据id查询出来的实体对象也不能为空。 当然还必须处于登陆状态,并且拥有相关的角色权限。

到此我们只是验证了参数是否合法并且抛出了异常,但是并没有告诉用户后台发生了什么事情。

使用 @ControllerAdvice 和 @ExceptionHandler 可以捕获不同类型的错误,并且根据错误的类型给前台用户相应的反馈。

java 参数校验 优雅的,SpringBoot 如何优雅的进行参数校验相关推荐

  1. SpringBoot Validation优雅的参数校验

    前言:大多数项目中都需要后台对传过来的对象进行校验,所以经常需要写一些字段校验的代码,比如特殊字段非空.字段长度限制和邮箱格式验证等等.之前我们可能都是使用if-else-,写这些与业务逻辑关系不大的 ...

  2. SpringBoot实现通用的接口参数校验

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:cipher juejin.im/post/5af3c25b ...

  3. springboot+dubbo+validation 进行 rpc 参数校验

    注意:本文dubbo 版本 2.8.4 springboot 版本 2.0.4.RELEASE 项目结构 test-rest (前端消费着,controller 层,springboot+maven项 ...

  4. Springboot实战:Springboot+Netty优雅的创建websocket客户端 (附源码下载)

    Springboot-cli 开发脚手架系列 Netty系列:Springboot+Netty优雅的创建websocket客户端 (附源码下载) 文章目录 Springboot-cli 开发脚手架系列 ...

  5. SpringBoot如何优雅的使用RocketMQ

    阅读文本大概需要3分钟. 目录 SpringBoot如何优雅的使用RocketMQ 什么是RocketMQ? RocketMQ环境安装 SpringBoot环境中使用RocketMQ SpringBo ...

  6. 使用Hibernate-Validator优雅的验证RESTful Web Services的参数

    何为Hibernate-Validator 在RESTful Web Services的接口服务中,会有各种各样的入参,我们不可能完全不做任何校验就直接进入到业务处理的环节,通常我们会有一个基础的数据 ...

  7. python 程序停止打印日志_优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!

    在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序就会直接 ...

  8. 如果优雅停止 SpringBoot 服务,应该拒绝 kill -9 暴力停止

    搞IT 在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序 ...

  9. bean validation校验方法参数_SpringBoot参数校验 从入门到精通 解决繁琐的参数验证工作...

    ● 手把手教你实现 SpringBoot与Vue整合开发 前后端分离 简单例子 详解●SQL优化经历  SQL执行效率提高了1000w倍●Java面试题 详解 由易到难● SQL语句大全详解 增删改查 ...

最新文章

  1. TensorFlow教程:快速入门深度学习五步法(附Keras实例)
  2. 利用MingW检验程序运行内存
  3. EF迁移:回滚上一次应用的迁移?
  4. CCNA之ccna-路由器的telnet试验
  5. 汇编语言(第2版)2011040201
  6. 潭州Java中级班(day_13)-异常概述
  7. matlab 滤波器设计 coe_巴特沃斯滤波器
  8. ADC前端电压跟随器和ADC相关参数之---分辨率和精度(INL和DNL)
  9. 100多本炒股电子书网盘自由下载!
  10. web16(ColorBox插件编写)
  11. Win10中photoshop打开camera raw 报错
  12. 难说 | 新读了几本书
  13. php生成6位id,6位极品微信号?微信号id名字大全
  14. Python pass 语句
  15. CrossOrigin注解的方式实现接口的跨域访问
  16. Cadence Allegro 17.4学习记录开始06-PCB Editor 17.4快捷键的说明和中英文的切换和操作界面放大缩小设置
  17. python软件电脑配置要求-Python实现的读取电脑硬件信息功能示例
  18. python测试代码报错:Ran 0 test in 0.00s
  19. Java的8大基本数据类型
  20. Windows下的远程命令行工具pstools

热门文章

  1. 魔域为什么服务器更新还显示状态有很多人登陆,《魔域》常见问题
  2. SpringMVC XXX-servlet.xml ApplicationContext.xml
  3. 团队作业第六次-团队Github实战训练
  4. Ubuntu 14 如何解压 .zip、.rar 文件
  5. Vue、J2ee - 001 : Vue项目的创建过程
  6. 阿里云centos远程连接mysql
  7. centos7安装git踩坑记
  8. 用js内置对象XMLHttpRequest 来用ajax
  9. ios中mvc的FormsAuthentication.SetAuthCookie(cookieUserName, false)失败
  10. IE10-浏览器实现placeholder效果