springboot使用Validated实现参数校验

做为后端开发人员,一定有前端传的数据是可能会出错的警惕性,否则程序就可能会出错,比如常遇到的空指针异常,所以为了程序运行的健壮性,我们必须对每一个参数进行合法校验,就能避免很多不必要的错误,但如果仅仅是if-else则非常冗余且不美观,就可以使用Validated进行参数校验。Validated可以非常优雅的完成参数校验的任务,仅仅需要几个注解。

1.首先,引入Validated依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2.使用Validated,使用Validated非常简单,只需要在controller接收的参数前加上 @Validated 注解就行,表示该参数需要校验。也可以在类上加上@Validated注解,表示本类中的方法开始参数校验功能,然后在需要校验的参数前加上@Valid注解,表示后面的参数需要校验。

 

然后在接收参数的实体类中配置好校验标准,如下,如果实体类属性也是一个实体类,则需要添加@Valid注解,不能添加@Validated注解,然后在去对应的实体类中添加校验属性

此时就完成了参数校验,首先@Validated会告知系统当前参数要进行校验,然后会根据校验对象里面每个属性的校验注解进行逐一的校验,如果不合法就会抛出import org.springframework.web.bind.MethodArgumentNotValidExceptio异常。

3.测试

当使用不合法的参数访问controller时,就会报错

4.统一异常处理,

可以看到报错内容非常不友好,非常长一串,此时就可以使用统一异常处理,捕获MethodArgumentNotValidException发出的异常,当然也能捕获任何异常。重启测试类后,就能获取比较直观明显简洁的报错信息了

 

5.当然,除了通过在接收参数前注解声明校验并在实体类的属性上加注解进行校验,也可以直接在方法的参数上校验,

基本类型参数或简单类型参数通常不需要使用@Valid ,适用@Valid的方法除了上面提到的一个,还有当请求体为JSON时,也需要添加@Valid

但我暂时没找到对集合比如map的键值对进行校验的方法,如有指正,万分感谢

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值