2016-06-22 4 views
1

ich durch die Dokumentation von Hibernate würde und ich kam in diesem Artikel autowiring in benutzerdefinierten Validierer zu ermöglichen.Wie eine benutzerdefinierte ConstraintValidatorFactory implementieren, um @Autowiring in benutzerdefinierten Validierer verwenden

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

Aber ich verstehe nicht, die Umsetzung der getInstance und Methoden lösen.

Im Grunde bin ich nicht sicher, was ich in sie schreiben soll.

Kann mir bitte jemand in die richtige Richtung weisen.

+0

Nur für diesen Zweck Spring hat bereits [SpringConstraintValidatorFactory] (https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/beanvalidation/SpringConstraintValidatorFactory.html) – Lu55

Antwort

0

Blick in die Dokumentation für diese beiden Methoden:

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); 
} 

Es sollte dann klar sein, dass der erste, der eine neue Instanz eines ConstraintValidator zurückkehren sollte und die andere sollte tun, was ein sauberes zu tun ist erforderlich, bis . Es liegt dann an Ihnen, wie Sie diese implementieren. Diese link hat ein Beispiel, wie getInstance mit BeanManagerProvider zu implementieren, aber Sie können auch eine sehr einfache Implementierung, die verwendet if-Anweisungen und dann so etwas wie new MyConstraintValidator... aufrufen. Die Implementierung von releaseInstance hängt davon ab, ob Sie etwas tun müssen, wenn die Instanz nicht mehr verwendet wird.