如何实现Custom ConstraintValidatorFactory以在自定义验证器中使用@Autowiring

时间:2016-06-22 16:54:57

标签: java spring validation bootstrapping hibernate-validator

我正在阅读Hibernate的文档,我遇到了这篇文章,以便在自定义验证程序中启用自动装配。

https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-bootstrapping.html#example-using-custom-constraint-validator-factory

但是我不了解getInstance和release方法的实现。

基本上我不确定我应该写些什么。

有人可以指出我正确的方向。

1 个答案:

答案 0 :(得分:-1)

查看这两种方法的文档:

public interface ConstraintValidatorFactory {

/**
 * @param key The class of the constraint validator to instantiate.
 *
 * @return A new constraint validator instance of the specified class.
 */
<T extends ConstraintValidator<?,?>> T getInstance(Class<T> key);

/**
 * Signal ConstraintValidatorFactory that the instance is no longer
 * being used by the Bean Validation provider
 *
 * @param instance validator being released
 */
void releaseInstance(ConstraintValidator<?,?> instance);
}

然后应该清楚的是,第一个应该返回ConstraintValidator的新实例,而另一个应该做任何需要进行清理的事情。然后由您决定如何实现它们。这个link有一个示例如何使用getInstance实现BeanManagerProvider,但您也可以使用if语句然后调用类似new MyConstraintValidator...的非常简单的实现。 releaseInstance的实现取决于在不再使用实例时是否需要执行任何操作。