java 参数校验 优雅的,SpringBoot 如何优雅的进行参数校验
参数的合法性直接影响到程序的安全和性能,因此在进行相关操作前必须检测对象是否为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 如何优雅的进行参数校验相关推荐
- SpringBoot Validation优雅的参数校验
前言:大多数项目中都需要后台对传过来的对象进行校验,所以经常需要写一些字段校验的代码,比如特殊字段非空.字段长度限制和邮箱格式验证等等.之前我们可能都是使用if-else-,写这些与业务逻辑关系不大的 ...
- SpringBoot实现通用的接口参数校验
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:cipher juejin.im/post/5af3c25b ...
- springboot+dubbo+validation 进行 rpc 参数校验
注意:本文dubbo 版本 2.8.4 springboot 版本 2.0.4.RELEASE 项目结构 test-rest (前端消费着,controller 层,springboot+maven项 ...
- Springboot实战:Springboot+Netty优雅的创建websocket客户端 (附源码下载)
Springboot-cli 开发脚手架系列 Netty系列:Springboot+Netty优雅的创建websocket客户端 (附源码下载) 文章目录 Springboot-cli 开发脚手架系列 ...
- SpringBoot如何优雅的使用RocketMQ
阅读文本大概需要3分钟. 目录 SpringBoot如何优雅的使用RocketMQ 什么是RocketMQ? RocketMQ环境安装 SpringBoot环境中使用RocketMQ SpringBo ...
- 使用Hibernate-Validator优雅的验证RESTful Web Services的参数
何为Hibernate-Validator 在RESTful Web Services的接口服务中,会有各种各样的入参,我们不可能完全不做任何校验就直接进入到业务处理的环节,通常我们会有一个基础的数据 ...
- python 程序停止打印日志_优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止!
在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序就会直接 ...
- 如果优雅停止 SpringBoot 服务,应该拒绝 kill -9 暴力停止
搞IT 在使用 SpringBoot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭.而且一些没有执行完的程序 ...
- bean validation校验方法参数_SpringBoot参数校验 从入门到精通 解决繁琐的参数验证工作...
● 手把手教你实现 SpringBoot与Vue整合开发 前后端分离 简单例子 详解●SQL优化经历 SQL执行效率提高了1000w倍●Java面试题 详解 由易到难● SQL语句大全详解 增删改查 ...
最新文章
- TensorFlow教程:快速入门深度学习五步法(附Keras实例)
- 利用MingW检验程序运行内存
- EF迁移:回滚上一次应用的迁移?
- CCNA之ccna-路由器的telnet试验
- 汇编语言(第2版)2011040201
- 潭州Java中级班(day_13)-异常概述
- matlab 滤波器设计 coe_巴特沃斯滤波器
- ADC前端电压跟随器和ADC相关参数之---分辨率和精度(INL和DNL)
- 100多本炒股电子书网盘自由下载!
- web16(ColorBox插件编写)
- Win10中photoshop打开camera raw 报错
- 难说 | 新读了几本书
- php生成6位id,6位极品微信号?微信号id名字大全
- Python pass 语句
- CrossOrigin注解的方式实现接口的跨域访问
- Cadence Allegro 17.4学习记录开始06-PCB Editor 17.4快捷键的说明和中英文的切换和操作界面放大缩小设置
- python软件电脑配置要求-Python实现的读取电脑硬件信息功能示例
- python测试代码报错:Ran 0 test in 0.00s
- Java的8大基本数据类型
- Windows下的远程命令行工具pstools
热门文章
- 魔域为什么服务器更新还显示状态有很多人登陆,《魔域》常见问题
- SpringMVC XXX-servlet.xml ApplicationContext.xml
- 团队作业第六次-团队Github实战训练
- Ubuntu 14 如何解压 .zip、.rar 文件
- Vue、J2ee - 001 : Vue项目的创建过程
- 阿里云centos远程连接mysql
- centos7安装git踩坑记
- 用js内置对象XMLHttpRequest 来用ajax
- ios中mvc的FormsAuthentication.SetAuthCookie(cookieUserName, false)失败
- IE10-浏览器实现placeholder效果