JSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面,就可以在需要校验的时候进行校验了。校验框架注解如下:
注解 | 解释 |
---|---|
@Null | 被注释的元素必须为null |
@NotNull | 被注释的元素必须不为null |
@AssertTrue | 被注释的元素必须为true |
@AssertFalse | 被注释的元素必须为false |
@Min(value) | 被注释的元素必须是一个数字,且值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,且值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,且值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,且值必须小于等于指定的最大值 |
@Size(max, min) | 被注释的元素大小必须在指定的范围内 |
@Digits(integer, fraction) | 被注释的元素必须是一个数字,且其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern | 被注释的元素必须符合指定的正则表达式 |
Hibernate validator 在JSR303的基础上对校验注解进行了扩展,扩展注解如下:
注解 | 解释 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串必须非空 |
@Range | 被注释的元素必须在适合的范围内 |
Spring validtor 同样扩展了jsr303,并实现了方法参数和返回值的校验
Spring 提供了MethodValidationPostProcessor类,用于对方法的校验
使用:
pom.xml添加依赖
<!--jsr 303-->
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.0.Final</version>
</dependency>
@NotEmpty、@NotBlank、@NotNull 区别和使用
- @NotNull
适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty) - @NotBlank
适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0 - @NotEmpty
适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0