Инициализация компонента Spring из статического метода из другого класса?

Я пытался создать bean-компонент Hibernate Validator и столкнулся с этой проблемой, создав bean-компонент из статического фабричного метода в другом классе. Я нашел способ Spring получить мой bean-компонент Validator инициализирован (решение внизу), но сама проблема остается нерешенной. Validator используется здесь в качестве примера

Вот как я создаю экземпляр Validator в Java

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

Вот как я пытался создать bean в 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" />

Я понимаю, что в "фабричном методе" вы можете получить доступ только к статическим методам, определенным в классе, определенном в параметре "класс". Поскольку метод buildDefaultValidatorFactory() является статическим, я не могу создать экземпляр проверки и укажите его как «фабричный компонент» для validatorFactory следующим образом:

<bean id="validation" class="javax.validation.Validation" />

<bean id="validatorFactory" 
    class="javax.validation.ValidatorFactory" 
    factory-bean="validation"
    factory-method="buildDefaultValidatorFactory" />

Это приводит к сообщению об ошибке

«Проверьте, что метод с указанным именем существует и что он нестатичен"

Вопрос в том, как бы вы создали бин в таком виде ситуация весной?

Вот как я решил проблему с валидатором:

<bean id="validator"
  class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
42
задан Spaideri 27 March 2012 в 07:36
поделиться