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

这篇文章将为大家详细讲解有关SpringBoot如何优雅的进行参数校验,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联是专业的新安网站建设公司,新安接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新安网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

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

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

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

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

验证总是摆在第一位。

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

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

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

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

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

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如何优雅的进行参数校验

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


文章名称:SpringBoot如何优雅的进行参数校验
标题来源:http://hbruida.cn/article/gohjeg.html