0

私はSpringの新規ユーザーであり、おそらく(Spring IOCの概念/内部の誤解のために)何か間違ったことをしているので、この質問が簡単な答えになることを願っています。

これが私がやろうとしていることです:私は2つの異なるサードパーティライブラリからの2つのBeanを使おうとしています:

<bean id="validator" class="org.owasp.esapi.ESAPI" factory-method="validator"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

問題は、両方が同じIDを持っていることであり、それは許可されていません。ESAPIバリデーターを自動配線しようとしていますが、正しく従えば、LocalValidatorFactoryBeanが春までに使用されます。

したがって、ESAPIバリデーターを使用するための単純化されたクラスは次のようになります。

public class ValidatedString {
    @Autowired(required=true)
    Validator stringValidator; 

    public void doSomethingWithTheValidator() {
        // do something
    }
}

しかし、私が理解できないのは、IDを変更する方法です。どちらも別のパッケージからValidatorクラスを返しますが、idフィールドはクラス名と同じである必要があるという印象を受けました。

ヘルプ??

4

3 に答える 3

1

を変更してみましたidか?idと属性はどちらもname自分次第です。クラス名と同じである必要はありません。そのようにBeanが「何であるか」を理解するのは少し簡単です。

Beanがの場合@Autowired、Springは名前、タイプ(私が覚えているデフォルト)、またはコンストラクターのいずれかに基づいて最適な一致を使用します。したがって、クラスValidator内のyourがthenの場合、それが注入されます。ValidatedStringorg.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 に答える