我是一个新的Spring用户,并且可能做错了(由于对Spring IOC的概念/内部的误解),所以希望这个问题能够得到一个简单的答案。
这是我正在尝试做的事情:我正在尝试使用来自两个不同第三方库的两个bean:
<bean id="validator" class="org.owasp.esapi.ESAPI" factory-method="validator"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
问题是它们都具有相同的Id,并且不允许这样做。我正在尝试自动连接ESAPI验证器,如果我正确地遵循了,则Spring会使用LocalValidatorFactoryBean。
因此,我使用ESAPI验证器的简化类将是:
public class ValidatedString {
@Autowired(required=true)
Validator stringValidator;
public void doSomethingWithTheValidator() {
// do something
}
}
但我无法理解的是如何更改ID。两者都返回一个Validator类,来自不同的包,我的印象是id字段需要与类名相同。
帮助??
答案 0 :(得分:1)
您是否尝试过更改id
? id
和name
属性都取决于你自己,并不要求它们与类名相同,只是更容易弄清楚bean是“那样”的。
当bean为@Autowired
时,Spring将使用基于名称,类型(我记得默认)或构造函数的最佳匹配,如果Validator
类中的ValidatedString
是一个org.owasp.esapi.ESAPI
那么就是注入的东西。
干杯,
答案 1 :(得分:0)
<bean id="esapiValidator" class="org.owasp.esapi.ESAPI" factory-method="validator"/>
<bean id="localValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
问题解决了。
答案 2 :(得分:0)
<bean id="validator" class="org.owasp.esapi.ESAPI" factory-method="validatorFactory"/>
<bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
ID和factory-method
之类的引用通常取决于您。