Spring Validation验证框架的使用

本文介绍了如何在Spring项目中使用Validation框架进行参数校验,包括添加依赖、使用注解、异常处理和配置类的设置,以及如何处理响应结果中的null值问题,旨在提升代码的健壮性和用户体验。
摘要由CSDN通过智能技术生成

目录

简述

添加依赖

应用

异常处理(BindException)

Spring Validation配置类

响应结果null值处理

简述

        在实际开发项目中我们需要对客户端传递到服务器的参数进行校验,用于判定请求参数的合法性,假如请求参数不合法,不可以去执行后续的业务。该如何校验?一种方式是我们在控制层方法中每次都自己进行参数有限制判断,不合法可以抛出异常,但是工作量和代码复杂度会比较高。第二种方式即使采取市场上主流的Spring Validation框架去实现校验。

添加依赖

    <!-- Spring Boot中的Spring Validation的依赖项,用于检查方法的参数的基本有效性 -->
    <!-- 基本有效性:就是一些浅显的检查,数字大小超标、文字长度,字符串格式,不需要连接数据库就可以检验出来的 -->    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

应用

添加注解

        根据业务需求,将@Validated / @Valid添加在需要提交校验的参数的前,加了之后告诉Spring Validation框架需要检查此参数。以TagTypeAddNewParam对象为例。

    public JsonResult addNew(@Validated TagTypeAddNewParam tagTypeAddNewParam){
        log.debug("开始处理【新增标签类别】的请求,参数:{}",tagTypeAddNewParam);
        tagService.addNew(tagTypeAddNewParam);
        return JsonResult.ok();
    }

检查规则注解

  • @NotNull:没有提交参数,不予通过。
  • @NotEmpty:没有提交参数或者提交参数字符串长度为零,不予通过。
  • @NotBlank:不允许为空白,例如 空格是不允许的。局限于字符串类型的参数。(“a  b”检查通过,这样中间空格问题解决不了)。
  • @Pattern:使用正则表达式进行检查字符串。但是不检查是否为null,配合@NotNull使用。
  • @Range:此注解两个参数 min最小值默认为0,max最大值,message提示信息

配置检查规则

对校验参数对象的属性进行规则配置:

@NotNull(message = "xxx"):被此注解标注的属性将不能为空,客户端在该字段的输入框不输入内容不是null,它是一个空字符串,从API文档测试中将此属性值的输入框删除,太能测试效果,这样前端会报400错误代码,表示请求参数格式错误。该注解属性message是为了区分哪个属性值提交时违背了Spring Validation框架的校验机制,给与提示信息。这个时候全局异常处理中就不去自己组织语言了。

之所以前端会报错400,是因为Spring框架自带的处理异常,将此异常进行解析,返回给前端一个400错误。它的默认处理异常不是我们想要的效果,就需要自己去全局异常处理进行捕获此异常并自定义处理。

    /**
     * 新增标签类型的参数类
     */
    @Data
    public class TagTypeAddNewParam implements Serializable {
        /**
         * 标签类别名称
         */
        @NotNull(message = "新增标签类别失败,请提交标签
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值