0

我是一个新的 Spring 用户,可能做错了什么(由于对 Spring IOC 的概念/内部的误解),所以希望这个问题能得到一个简单的答案。

这就是我想要做的事情:我正在尝试使用来自两个不同的 3rd 方库的两个 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 字段需要与类名相同。

帮助??

4

3 回答 3

1

你试过改变id's吗?id和属性都name取决于您自己,不需要它们与类名相同,这样更容易弄清楚bean“是”什么。

当 bean 为 时@Autowired,Spring 将使用基于名称、类型(我记得的默认值)或构造函数的最佳匹配,因此如果您ValidatorValidatedString类中是 anorg.owasp.esapi.ESAPI那么这就是将被注入的内容。

干杯,

于 2012-10-19T09:56:26.033 回答
0
<bean id="esapiValidator" class="org.owasp.esapi.ESAPI" factory-method="validator"/>
<bean id="localValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

问题解决了。

于 2012-10-19T09:57:58.250 回答
0
<bean id="validator" class="org.owasp.esapi.ESAPI" factory-method="validatorFactory"/>
<bean id="validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

id 和引用等factory-method通常由您决定。

于 2012-10-19T09:58:33.247 回答