从另一个类的静态方法初始化Spring Bean?
我试图创建Hibernate Validator bean,并遇到这个问题,在另一个类中创建一个从静态工厂方法的bean。我找到了一种弹簧方法来初始化我的验证器bean(底部的解决方案),但问题本身仍未解决。验证器在这里用作示例案例。
这就是我在Java中创建验证器实例的方式
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
这就是我尝试在 applicationContext 中创建 Bean 的方式.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" />
我的理解是,在“工厂方法”中,您只能访问在“class”参数中定义的Class中定义的静态方法。由于方法 buildDefaultValidatorFactory() 是静态的,因此我无法创建一个 Validation 的实例,并将其作为验证器Factory的“factory-bean”,如下所示:
<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"/>