spring 参数校验

116 阅读2分钟

依赖导入

<dependency> 
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId> 
</dependency>

重点

对于简单类型参数(非Bean),直接在参数前,使用注解添加约束规则。比如 @NotNull @Length 等

在类名前追加 @Validated 注解,否则添加的约束规则不生效。

方法被调用时,如果传入的实际参数与约束规则不符,会直接抛出 MethodArgumentNotValidException(Controller层) ConstraintViolationException (Service层),表明参数校验失败

对于Bean类型的参数,在Bean内部的各个字段上面追加约束注解,然后在方法的参数前面添加 @Valid 注解。

类似list、map等的级联校验 注解

image.png

注解

@Null 限制只能为null

@NotNull 限制必须不为null

@NotEmpty 只作用于字符串类型,字符串不为空,并且长度不为0

@NotBlank 只作用于字符串类型,字符串不为空,并且trim()后不为空串

@AssertFalse 限制必须为false

@AssertTrue 限制必须为true

@DecimalMax(value) 限制必须为一个不大于指定值的数字

@DecimalMin(value) 限制必须为一个不小于指定值的数字

@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future 限制必须是一个将来的日期

@Past 验证注解的元素值(日期类型)比当前时间早

@Max(value) 限制必须为一个不大于指定值的数字

@Min(value) 限制必须为一个不小于指定值的数字

@Pattern(value) 限制必须符合指定的正则表达式

@Size(max,min) 限制字符长度必须在min到max之间

@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

注意:

@NotNull 适用于任何类型被注解的元素必须不能与NULL

@NotEmpty 适用于String Map或者数组不能为Null且长度必须大于0

@NotBlank 只能用于String上面 不能为null,调用trim()后,长度必须大于0

@Length(message= "名称不能超过个 {max} 字符", max = 5)

链接

blog.csdn.net/qq_42956993…