Bean Validation具体描述

概述

JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。

Constraint的实现

Bean Validation constraints

Hibernate Validator 4.3.2 描述

“Bean验证约束”显示了Bean验证API中指定的所有约束的用途和支持的数据类型。所有这些约束都适用于字段/属性级别,Bean验证规范中没有定义类级别的约束。如果您使用的是Hibernate对象关系映射器,那么在为您的模型创建DDL时会考虑一些约束(请参阅“Hibernate元数据影响”专栏)

Hibernate Validator允许将一些约束应用于比Bean验证规范所要求的更多的数据类型(例如@Max可以应用于字符串)。依赖此功能可能会影响应用程序在Bean验证提供者之间的可移植性。

注解支持的数据类型描述信息对元数据的影响
@AssertFalseBoolean, boolean检查带注释的元素是否为false
@AssertTrueBoolean, boolean检查带注释的元素是否为true
@DecimalMaxBigDecimal, BigInteger, String, byte, short, int, long 和基本数据类型所对应的包装器. 另外由HV支持:Number和CharSequence的任何子类型带注释的元素必须是一个数值,其值必须小于或等于指定的最大值。根据BigDecimal字符串表示法,参数值是最大值的字符串表示法
@DecimalMinBigDecimal, BigInteger, String, byte, short, int, long 和基本数据类型所对应的包装器. 另外由HV支持:Number和CharSequence的任何子类型带注释的元素必须是一个数值,其值必须大于或等于指定的最小值。根据BigDecimal字符串表示法,参数值是最小值的字符串表示法
@Digits(integer, fraction)BigDecimal, BigInteger, String, byte, short, int, long 和基本数据类型所对应的包装器. 另外由HV支持:Number和CharSequence的任何子类型检查注释的值是否为最多包含整数和小数位数的数字定义字段精度和比例
@Futurejava.util.Date、java.util.Calendar;由HV提供额外支持, 如果是Joda时间,[http://joda-time.sourceforge.net/]日期/时间API位于类路径上:ReadablePartial和ReadableInstant的任何实现检查带注解的日期是否在将来
@Pastjava.util.Date、java.util.Calendar;由HV提供额外支持, 如果是Joda时间,[http://joda-time.sourceforge.net/]日期/时间API位于类路径上:ReadablePartial和ReadableInstant的任何实现检查带注解的日期是否在过去
@MaxBigDecimal、BigInteger、byte、short、int、long和基本数据类型所对应的包装器. 另外由HV支持:CharSequence的任何子类型(计算字符序列表示的数值)、Number的任何子类型检查带注解的值是否小于或等于指定的最大值在字段上添加检查约束
@MinBigDecimal、BigInteger、byte、short、int、long和基本数据类型所对应的包装器. 另外由HV支持:CharSequence的任何子类型(计算字符序列表示的数值)、Number的任何子类型检查带注解的值是否大于或等于指定的最小值在字段上添加检查约束
@NotNull任何类型检查带注解的值是否不为null字段不为null
@Null任何类型检查带注解的值是否为null
@Pattern(regex, flag)String, 另外由HV支持:CharSequence的任何子类型检查带注解的字符串是否与正则表达式regex匹配(考虑给定的标志匹配)
@Size(min, max)String, Collection, Map 和数组,另外由HV支持:CharSequence的任何子类型检查带注解元素的大小是否在最小值和最大值之间(包括最小值和最大值)字段的长度将会被设置为最大值
@Valid任何非基本类型对关联对象递归执行验证,如果对象是集合或数组或是映射,则递归验证元素

Hibernate Validator 附加的

Hibernate Validator 4.3.2附加

除了Bean验证API定义的约束之外,Hibernate Validator还提供了一些有用的自定义约束。除了一个例外,这些约束也适用于字段/属性级别,只有@ScriptAssert是类级别的约束

注解支持的数据类型描述信息对元数据的影响
@CreditCardNumberCharSequence检查带注释的字符序列是否通过Luhn校验和测试。注意,此验证旨在检查用户错误,而不是信用卡有效性!另见信用卡号码剖析[http://www.merriampark.com/anatomycc.htm]
@EmailCharSequence检查指定的字符序列是否为有效的电子邮件地址。可选参数regexp和flags允许指定电子邮件必须匹配的其他正则表达式(包括正则表达式标志)
@Length(min, max)CharSequence验证带注解的字符序列是否在包含的最小值和最大值之间字段的长度将设置为最大值
@ModCheck(modType, multiplier, startIndex, endIndex , checkDigitPosition, ignoreNonDigitCharacters)CharSequence检查注释字符序列中的数字是否通过mod 10或mod 11校验和算法。modType用于选择模类型,multiplier决定特定于算法的乘法器(另请参见Luhn算法)[http://en.wikipedia.org/wiki/Luhn_algorithm]).startIndexendIndex只允许在指定的子字符串上运行模算法。checkDigitPosition允许使用字符序列中的任意数字作为检查数字。如果未指定,则假定校验位是指定范围的一部分。最后不能不提gnoreNonDigitCharacters允许忽略非数字字符
@NotBlankCharSequence检查带注解的字符序列是否不为null,且修剪长度是否大于0。与@NotEmpty的区别在于,此约束只能应用于字符串,并且尾部空白被忽略
@NotEmptyCharSequence, Collection, Map, 数组检查带注释的元素是否为null或空
@Range(min, max)BigDecimal, BigInteger, CharSequence, byte, short, int, long 和基本数据类型所对应的包装器检查带注解的值是否介于(包括)指定的最小值和最大值之间
@SafeHtml(whitelistType,additionalTags)CharSequence检查带注释解的值是否包含潜在的恶意片段,如<script/>。为了使用此约束,jsoup[http://jsoup.org/]库必须是类路径的一部分。通过whitelistType属性,可以选择重新定义的白名单类型。还可以使用additionalTags属性为白名单指定其他html标记
@ScriptAssert(lang, script, alias)任何类型检查给定脚本是否可以针对带注释的元素成功求值。为了使用此约束,JSR223(“Java平台脚本”)定义的Java脚本API的实现必须是类路径的一部分。要计算的表达式可以用任何脚本或表达式语言编写,在类路径中可以找到与JSR223兼容的引擎
@URL(protocol, host, port, regexp, flags)CharSequence根据RFC2396检查带注释的字符序列是否为有效的URL。如果指定了protocolhostport的任何可选参数,则相应的URL片段必须与指定的值匹配。可选参数regexpflags允许指定URL必须匹配的其他正则表达式(包括正则表达式标志)

依赖

<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<!--接口规范-->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<!--Hibernate Validator 附加实现-->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.16.Final</version>
</dependency>
<!--注:在spring-boot-starter-web的2.1.5.RELEASE版本中包含了hibernate-validator的6.0.16版本-->
<!--springBoot项目集成-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

springBoot项目中使用

持续更新中…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值