自上次Hibernate Validator发布以来已经过去了几个月,我们在这期间取得了一些显著的进展。

我们刚刚发布了包含所有这些错误修复和增强功能的Hibernate Validator 6.0.8.Final。

这是所有使用Hibernate Validator 6.0.x的用户推荐升级,它可以直接替换6.0.7.Final。

新功能

向约束验证器传递有效载荷

Matthias Kurz致力于允许向约束验证器传递任意有效载荷。

将其视为根据您的环境(区域设置、生产/预发布环境、您在引导时初始化并希望注入约束验证器的全局对象等)使约束验证器行为不同的好方法。

有效载荷是Object,因此它可以是一个String、一个Map,甚至是合适的bean。

您可以在初始化ValidatorFactory时定义约束验证器有效载荷

ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
    .configure()
    .constraintValidatorPayload( "US" )
    .buildValidatorFactory();

Validator validator = validatorFactory.getValidator();

并在初始化特定的Validator时对其进行细化

HibernateValidatorFactory hibernateValidatorFactory = Validation.byDefaultProvider()
    .configure()
    .buildValidatorFactory()
    .unwrap( HibernateValidatorFactory.class );

Validator validator = hibernateValidatorFactory.usingContext()
    .constraintValidatorPayload( "FR" )
    .getValidator();

您的约束验证器可以在其initialize()方法中获取约束验证器有效载荷

public class ZipCodeValidator implements HibernateConstraintValidator<ZipCode, String> {

    public String countryCode;

    @Override
    public void initialize(ConstraintDescriptor<ZipCode> constraintDescriptor,
            HibernateConstraintValidatorInitializationContext initializationContext) {
        this.countryCode = initializationContext
                .getConstraintValidatorPayload( String.class );
    }

    [...]
}

您可以在我们的参考文档中找到有关此新功能的所有相关信息。

性能和构建改进

Marko致力于一些性能改进(HV-1566HV-1543HV-1444),这些改进应该使Hibernate Validator 6.0.8.Final比以往任何时候都要快。

HV-1444还改进了我们与Bean Validation规范在涉及容器元素约束的一些边缘情况方面的正确性。

我们还针对JDK 9和TCK以及升级了我们的依赖项进行了一些构建改进。

WildFly 12

随着WildFly 12最近发布,我们更新了构建以测试Hibernate Validator在WildFly 11和12上的版本。

目前,我们为这两个版本生成WildFly补丁,以升级WildFly内部的Hibernate Validator模块。

请注意,WildFly 12现在包含Bean Validation 2.0和Hibernate Validator 6.0(6.0.7.Final),但它们默认未启用。您需要通过追加ee8.preview.mode选项来启用EE8预览模式,如WildFly 12发布通告中所述。

已修复的bug

我们还修复了一些bug,最值得注意的是

  • HV-1461 - 一个可能在某些边缘情况下干扰方法重写的bug - 通过Classmate升级修复

  • HV-1551 - 在原始集合(例如private List myList)上无法定义@Size约束

翻译更新

默认消息的西班牙语翻译由Hillmer Chona更新。

完整更改日志

已修复问题的完整列表可以在我们的JIRA上找到。

获取6.0.8.Final

要使用Maven、Gradle等获取发布版本,请使用GAV坐标org.hibernate.validator:{hibernate-validator|hibernate-validator-cdi|hibernate-validator-annotation-processor}:6.0.8.Final。请注意,组ID已从org.hibernate(Hibernate Validator 5和更早版本)更改为org.hibernate.validator(从Hibernate Validator 6开始)。

或者,SourceForge提供了一个包含所有组件的分发捆绑包(TAR.GZZIP)。

如果您想在WildFly上使用此版本的最新功能,我们还提供了WildFly 11WildFly 12的WildFly补丁。您可以在此处了解如何应用这些补丁。

接下来是什么?

我们将继续发布维护版本,以快速修复用户报告的问题。

我们更新了我们的路线图,其中包含了我们对未来的想法。如果您想加入我们,请不要犹豫,选择一个任务并与我们讨论。

反馈、问题、想法?

要取得联系,请使用以下渠道


返回顶部