Skip to content

目的

参数校验可以增强程序的健壮性。

实现方案

主要实现方法:

  1. 手动校验(缺点:麻烦)
  2. 使用注解校验(主流)

在Java中,注解校验有相关规范名为Bean Validation。

Hibernate Validator是Bean Validation的一个实现,它不仅实现了Bean Validation规范中的所有功能,还进行了一些扩展。

而Spring Validation 起到了一个让Hibernate Validator更好的集成到Spring中的作用。

Bean Validation

Bean Validation是一个规范。描述规范可以是语言,也可以是代码。

Bean Validation使用注解描述了数据校验的规范。

Bean Validation定义的注解

注解描述
@NotNull检查属性值不能为null
@NotEmpty检查字符串、集合或数组等属性不能为空(即不是null且长度大于0)
@NotBlank检查字符串属性不能仅包含空白字符(即不是null,且去除首尾空白后长度大于0),仅适用于String
@Min(value)检查数值属性是否大于或等于指定的最小值
@Max(value)检查数值属性是否小于或等于指定的最大值
@Size(min=, max=)检查字符串、集合或数组等属性的大小是否在指定范围内
@Pattern(regexp=, flags=)检查字符串属性是否匹配指定的正则表达式
@DecimalMin(value)检查数值属性是否大于或等于指定的最小值(支持小数)
@DecimalMax(value)检查数值属性是否小于或等于指定的最大值(支持小数)
@Email(regexp=, flags=)检查字符串属性是否符合电子邮件的格式,也可以自定义正则表达式
@Future检查日期属性是否在当前日期之后
@Past检查日期属性是否在当前日期之前
@Digits(integer=, fraction=)检查数值的整数部分和小数部分是否满足指定的位数要求

Hibernate Validator 扩展的注解

注解描述
@Email检查被注解的元素是否是一个有效的电子邮件地址
@Length(min=, max=)检查字符串的长度是否在指定的最小值和最大值之间
@NotEmpty检查被注解的字符串、集合、Map或数组是否不为null且不为空(对于字符串,长度大于0;对于集合、Map或数组,包含至少一个元素)
@NotBlank检查被注解的字符串是否不为null且去除首尾空格后长度大于0
@Range(min=, max=)检查数值是否在指定的最小值和最大值之间
@URL(protocol=, host=, port=, regexp=, flags=)检查被注解的字符串是否是一个有效的URL,并可根据需要指定协议、主机名、端口等条件
@CreditCardNumber检查被注解的字符串是否是一个有效的信用卡号,通常通过Luhn算法验证

@Valid与@Validated

@VALID@vALIDETED
所属由Bean Validation 定义由Spring Validation 定义
分组校验×
嵌套校验×

Released under the MIT License.