Bean Validation
Bean Validation是JSR中的一种规范,提出这个规范的目的在于合理提取数据模型的校验逻辑,使数据校验相关的工作绑定到Java Bean域模型上,从而可以避免相同的校验逻辑重复出现以及重复出现在不同的层上。
Bean Validation 中的 constraint
Bean Validation通过定义相关元数据模型和API来规范校验工作,我们也可以在此基础上扩展。缺省的元数据是Java Annotations。这些元数据我们概括为constraint。通常我们要做的工作,就是根据业务场景选用相应的constraint。constraint 可以附加到字段,getter 方法,类或者接口上面。
以下为Bean Validation已经定义的一些constraint
@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(value) 被注释的元素必须符合指定的正则表达式
Bean Validation实现
Bean Validation只是一种规范,而我们熟知的Hibernate Validator是对它的一种实现。 Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
Hibernate Validator 附加的 constraint
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内
最后希望大家明白JSR 303这个规范的意义,意在合理管理数据校验工作。