Ich habe versucht, Hibernate Validator-Bean zu erstellen, und habe dieses Problem beim Erstellen einer Bean aus der statischen Factory-Methode in einer anderen Klasse verursacht. Ich habe einen Spring-Weg gefunden, um meine Validator-Bean zu initialisieren (Lösung ganz unten), aber das Problem selbst bleibt ungelöst. Der Validator wird hier als Beispiel verwendet.Spring Bean von der statischen Methode aus einer anderen Klasse initialisieren?
Dies ist, wie ich die Validator-Instanz in Java
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Das schaffen ist, wie ich versuchte, die Bohne in applicationContext.xml
<bean id="validatorFactory"
class="javax.validation.ValidatorFactory"
factory-method="javax.validation.Validation.buildDefaultValidatorFactory" />
<bean id="validator"
class="javax.validation.Validator"
factory-bean="validatorFactory"
factory-method="getValidator" />
Was ich verstehe zu schaffen ist, dass in „Fabrik- Methode "Sie können nur auf statische Methoden zugreifen, die in der im Parameter" class "definierten Klasse definiert sind. Da das Verfahren buildDefaultValidatorFactory() statisch ist kippe ich eine Instanz von Validation erstellen und geben Sie es als „Fabrik-Bohne“ für die validatorFactory wie folgt aus:
<bean id="validation" class="javax.validation.Validation" />
<bean id="validatorFactory"
class="javax.validation.ValidatorFactory"
factory-bean="validation"
factory-method="buildDefaultValidatorFactory" />
Diese endet Nachricht
"auf Fehler überprüfen Sie, ob ein Verfahren mit dem angegebenen Namen existiert, und dass es nicht-statische "
Frage ist, wie Sie Bohne in dieser Art von Situation im Frühjahr schaffen würde? Diese
ist, wie ich das Validator Problem gelöst:
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
Klassenname ist da, um zu demonstrieren, was ich machen wollte. Wie ich schon sagte: "Was ich verstehe, ist, dass Sie in" factory-method "nur auf statische Methoden zugreifen können, die in der im Parameter" class "definierten Klasse definiert sind." – Spaideri
Das ist richtig - wenn Sie den Parameter 'class' angeben, muss die Factory-Methode eine statische Methode dieser Klasse sein, wie in der Erstellung von' validatorFactory' zu sehen ist. –