这是一个漫长的旅程,超过六个月,但终于来了:我们刚刚发布了Hibernate Validator 6.0最终版,以及Bean Validation 2.0规范的最终版本。
自CR3以来有哪些新变化?
对于那些密切关注6.0开发的人来说,以下是自CR3以来的重要更改
-
更新文档
-
更新翻译
-
性能改进
-
减少内存占用
-
支持最新的JDK 9(构建180)
已解决的问题的完整列表可以在我们的JIRA上找到 此处。
为什么我应该使用这个酷炫的新版本?
我们为您带来了一些新功能
首先,Hibernate Validator 6.0是Bean Validation 2.0规范的参考实现,因此它包含所有新功能
-
容器元素约束和级联验证的一等支持(例如:
private Map<@Valid @NotNull OrderCategory, List<@Valid @NotNull Order>> orderByCategories;
); -
支持新的JSR 310日期/时间数据类型用于
@Past
和@Future
; -
新的内置约束:
@Positive
、@PositiveOrZero
、@Negative
、@NegativeOrZero
、@PastOrPresent
和@FutureOrPresent
;
我们还利用了JDK 8的新功能(内置约束标记为可重复的,参数名称通过反射检索),因为它是现在所需的最小版本。
您可以在我们的Alpha、Beta和候选发布公告中阅读整个故事
-
6.0.0.Alpha1中我们引入了嵌套容器元素支持和基于lambda的约束定义;
-
6.0.0.Alpha2带有容器元素的编程API和XML定义。
-
6.0.0.Beta1 支持容器元素的元数据检索;
-
6.0.0.Beta2 支持值提取中的非泛型容器类型;
...而且它消耗的内存更少!
为了施展魔法,Hibernate Validator会收集你受约束的bean的大量元数据。在Keycloak开发者的报告之后,我们致力于减少收集的元数据占用的内存。
Hibernate Validator现在应该比以前消耗更少的内存来存储你的受约束bean的元数据。
轻松升级
你首先会注意到,artifacts的groupId已更改:现在是org.hibernate.validator
(我们在末尾添加了validator
,以便更好地隔离各种Hibernate技术)。
除此之外,如果你没有使用实验性功能,它可能只是直接替换。
如果你使用了旧的价值处理基础设施来处理自定义容器,你需要将它们迁移到新的值提取基础设施。
潜在的迁移问题的详细列表可以在我们的迁移指南中找到。
如果你想在WildFly上利用本版本的全新功能,我们还提供了针对WildFly 10.1和WildFly 11.0 Alpha1的WildFly补丁。你可以在这里了解如何应用此类补丁这里。
听起来很有趣,我该如何帮忙?
首先,在你的应用程序中测试它,并报告可能遇到的任何问题。
然后,如果你愿意,可以测试新功能(新的约束,新的容器元素支持...)。如果你对功能或文档有任何问题,请向我们报告。
最后,我们在Bean Validation 2.0和Hibernate Validator 6.0中添加了一些内置约束,因此我们需要更新翻译。
已涵盖英语、法语、德语、波斯语、乌克兰语和巴西葡萄牙语,但对于其他语言的任何帮助都受欢迎。只需查看我们GitHub仓库中的翻译并创建一个PR(如果你不知道如何编码属性文件,只需将其推送到我们,我们将进行处理)。
获取6.0.1.Final
要使用Maven、Gradle等获取发布版本,请使用GAV坐标 org.hibernate.validator:{hibernate-validator|hibernate-validator-cdi|hibernate-validator-annotation-processor}:6.0.1.Final。注意,groupId已从org.hibernate
(Hibernate Validator 5及更早版本)更改为org.hibernate.validator
(从Hibernate Validator 6开始)。
关于6.0.0.Final版本如何?
6.0.0.Final版本实际上是提交给JCP作为Bean Validation 2.0参考实现的版本。在最终审批投票期间,我们对它进行了大量的改进,因此我们决定立即发布带有所有这些改进的6.0.1.Final版本。
接下来是什么?
首先,我们将休息一下,等待您对这个版本的反馈。
在您的帮助下,我们希望很快发布一个包含更新翻译的新版本。
最后,我们还打算探索未来规范修订中可能的功能。在确定API之前,获得领域的反馈总是好的。
反馈、问题、想法?
要联系,请使用常规渠道
-
用户论坛(使用问题,一般反馈)
-
问题跟踪器(错误报告,功能请求)
-
邮件列表(与开发相关的话题)
-
Bean Validation开发邮件列表(关于Bean Validation规范的话题)