Hibernate验证程序-将注释链接到验证程序的方法

Hibernate验证程序-将注释链接到验证程序的方法,hibernate,validation,bean-validation,hibernate-validator,Hibernate,Validation,Bean Validation,Hibernate Validator,除了通过@Constraint annotation之外,是否有其他方法将验证注释与自定义验证器链接 Unique.java @Documented //----@Constraint(validatedBy = { UniqueValidator.class })----// @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) public @interface Unique { String messa

除了通过@Constraint annotation之外,是否有其他方法将验证注释与自定义验证器链接

Unique.java

@Documented
//----@Constraint(validatedBy = { UniqueValidator.class })----//
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface Unique {

    String message() default "org.hibernate.validator.constraints.Unique.message";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
public class UniqueValidator implements ConstraintValidator<Unique, Object> {
    @Override
    public void initialize(Unique unique) {}

    @Override
    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
    }
}
@已记录
//----@约束(validatedBy={UniqueValidator.class})----//
@目标({ElementType.TYPE})
@保留(RetentionPolicy.RUNTIME)
public@interface-Unique{
String message()默认为“org.hibernate.validator.constraints.Unique.message”;
类[]组()默认值{};

类您始终需要
@Constraint
注释。Bean验证的标记是我们有一个约束注释。但是,您可以使用空的
validatedBy
值:

@Documented
@Constraint(validatedBy = { })
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface Unique {

    String message() default "org.hibernate.validator.constraints.Unique.message";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}


Hibernate Validator 5.2还提供了特定于提供者的功能来添加约束定义。请查看
ConstraintDefinitionContributor
-。您可以在引导时提供自己的贡献者,或者甚至可以使用Java ServiceLoader机制,只需添加
META-INF/services/javax.validation.ConstraintValidator
列出您的
ConstraintValidator
实现。

谢谢,我尝试了ConstraintDefinitionContributor的解决方案,但没有成功,但是validation.xml工作正常。
<constraint-mappings
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
    xmlns="http://jboss.org/xml/ns/javax/validation/mapping" version="1.1">
    ...
    <constraint-definition annotation="com.acme.Unique">
        <validated-by include-existing-validators="false">
            <value>com.acme.UniqueValidator</value>
        </validated-by>
    </constraint-definition>