必须拿下的SpringBoot参数校验

本文介绍了在SpringBoot 2.6.8中如何进行参数校验,包括引入依赖、@Validated和@Valid的区别、统一异常处理、不同类型的参数校验方法,以及详细讲解了各种参数校验注解的使用。
摘要由CSDN通过智能技术生成

 实际项目中不仅仅前端需要做必填项等校验,为防止非法参数对业务造成影响,后端也需要对相关参数做校验,接下来就学习一下在Springboot项目中如何对参数进行校验。本文Springboot版本为2.6.8

引入依赖

如果Springboot版本小于2.3.xspring-boot-starter-web会自动传入hibernate-validator依赖。如果Springboot版本大于2.3.x,则需要手动引入依赖: 温馨提示:7.x.x版本可能会不起效

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.0.Final</version>
</dependency>
复制代码

或者直接引入springboot的场景启动器

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>2.7.0</version>
        </dependency>
复制代码

@Validated和@Valid区别

**@Validated@Valid**进行了二次封装,但是二者有以下的区别:

  • **@Validated提供分组功能,可以在参数验证时,根据不同的分组采用不同的验证机制。@Valid**没有分组功能
  • **@Validated用在类型、方法和方法参数上。但不能用于成员属性(field),@Valid**可以用在方法、构造函数、方法参数和成员属性(field)上
  • 一个待验证的pojo类,其中还包含了待验证的对象属性,需要在待验证对象上注解**@Valid,才能验证待验证对象中的成员属性,这里不能使用@Validated**

统一异常处理

如果校验不通过会报MethodArgumentNotValidException或者 ConstraintViolationException

@RestControllerAdvice
public class ParamException {

    @ExceptionHandler({MethodArgumentNotValidException.class})
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResultReturn handleMethodArgumentNotValidException(Metho
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值