千家信息网

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

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章将为大家详细讲解有关SpringBoot如何优雅的进行参数校验,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。参数的合法性直接影响到程序的安全和
千家信息网最后更新 2024年11月26日SpringBoot如何优雅的进行参数校验

这篇文章将为大家详细讲解有关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 可以捕获不同类型的错误,并且根据错误的类型给前台用户相应的反馈。

关于SpringBoot如何优雅的进行参数校验就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0