您的位置:首页 > 编程语言 > Java开发

SpringBoot 如何优雅的进行参数校验

2020-01-13 00:24 363 查看

参数的合法性直接影响到程序的安全和性能,因此在进行相关操作前必须检测对象是否为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 可以捕获不同类型的错误,并且根据错误的类型给前台用户相应的反馈。

 

转载于:https://my.oschina.net/qidis/blog/3069790

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chunxiaci7097 发布了0 篇原创文章 · 获赞 0 · 访问量 149 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: