如何在运行时决定约束验证器类?

时间:2015-06-27 15:14:16

标签: java annotations bean-validation hibernate-validator

我已经为这样的验证定义了一个注释:

@Documented
@Constraint(validatedBy = MyValidator.class)
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)

public @interface MyCustomValid {
 //required methods
}

现在,我想决定" validatedBy"运行时的类。就像我班上有一个领域一样:

public class MyClass {
      @MyCustomValid
      MyObject myObject;
}

如何在运行时传递ConstraintValidator类。我对不同的情况有不同的实现。

1 个答案:

答案 0 :(得分:1)

注释在编译时被编译到代码中,并且它们无法更改,因此您需要一个hack。

创建一个委托给另一个验证器的验证类。需要使用您设计的任何算法在运行时创建委托。请注意,代码可能会同时使用,因此您需要thread-safe initialization