了解JSR 303 - Bean Validation

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这个规范的意义,意在合理管理数据校验工作。

你可能感兴趣的:(java)