我们在开发 Bean Validation 2.0 方面取得了良好的进展,并决定将 BV 2.0 的目标版本移至 Hibernate Validator 6(更多信息请见本文末尾)。
我们不希望 5.3 版本半途而废,因此我们正在准备一个包含错误修复、额外翻译等功能的新 5.3 版本。这个候选发布版 1 是这一进程的第一步。之后请尽快发布 5.3.0.Final 版本,所以请尽可能彻底地测试这个版本,并报告您在其中发现的任何错误!
约束定义和声明编程 API
已删除实验性的 ConstraintDefinitionContributor
概念,以支持新的流体 API,与 Validator 中已存在的内容更为一致。
如果您想定义一个新的依赖于 ValidPassengerCountValidator
验证器的 ValidPassengerCount
约束注解,您可以使用以下 API
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.constraintDefinition( ValidPassengerCount.class )
.validatedBy( ValidPassengerCountValidator.class );
它还可以用于替换用于给定注解约束的验证器的实现。例如,您需要支持国际域名 (IDN) 在您的 URL 验证中,默认的 URLValidator
对您不起作用,因为它使用不支持 IDN 的 java.net.URL
。我们提供了一个替代的 RegexpURLValidator
,您可能希望在这种情况使用它
ConstraintMapping constraintMapping = configuration.createConstraintMapping();
constraintMapping
.constraintDefinition( URL.class )
.includeExistingValidators( false )
.validatedBy( RegexpURLValidator.class );
约束映射贡献者
感谢新的 hibernate.validator.constraint_mapping_contributors
属性,您现在可以声明多个约束映射贡献者,它们由逗号分隔,而之前您只能声明一个。
请注意,在 5.3 中,现有的 hibernate.validator.constraint_mapping_contributor
属性仍然支持,但已被弃用。
弃用的 hibernate.validator.constraint_mapping_contributor
属性将在 Hibernate Validator 6 中被移除。
电子邮件验证
我们改变了电子邮件验证的方式。现在它既更正确也更严格。我们知道有几个人在随机测试约束,他们可能需要更新他们的测试:电子邮件的域名现在需要是一个有效的域名,每个标签(两个点之间的部分)长度不得超过63个字符。因此,您不能仅生成一个由随机字符组成的80个字符长度的域名,您需要更加小心。
还有什么别的吗?
本版本的其它更改包括所有Maven依赖项的升级以及一些修复和润色。
您可以在变更日志中找到所有已解决的问题的完整列表。
要使用Maven,Gradle等获取发布版本,请使用GAV坐标 org.hibernate:{hibernate-validator|hibernate-validator-cdi|hibernate-validator-annotation-processor}:5.3.0.CR1。
要取得联系,请使用以下渠道
下一站?
我们正在积极开发Bean Validation 2.0和Hibernate Validator 6,重点支持Java 8的新特性(以及更多!)。人越多越高兴,所以请随意加入我们:提出想法,对别人的建议进行评论,现在是定义Bean Validation未来的时候了。您可以在Bean Validation网站上找到所有必要的信息。