4

SpringFramework と Java を使用しています。Spring xml ファイルを使用して、アーキテクチャのフローと Java 部分で使用される Bean を定義します。

XML ファイルに同じクラスの 2 つの Bean がありますが、コンストラクターの引数が異なります。

<bean id="beanA" class="Class" >
    <constructor-arg><value>valueA1</value></constructor-arg>
    <constructor-arg><value>ValueA2</value></constructor-arg>
</bean>

<bean id="beanB" class="Class" >
     <constructor-arg><value>valueB1</value></constructor-arg>
     <constructor-arg><value>valueB2</value></constructor-arg>-->
</bean>

@AutowiredJava からBean の 1 つをデフォルトとして設定する方法はありますか? そして、デフォルト以外の Bean を使用する場合は、@Qulifier("beanName")アノテーションを適用します。

4

2 に答える 2

5

primary属性を試してください。

<bean id="b1" class="test.B" />
<bean id="b2" class="test.B" />
<bean id="b3" class="test.B" primary="true" />

これにより、b3 Bean がここに注入されることが保証されます

public class Test {
    @Autowired
    B b;
...
于 2013-07-10T10:03:46.060 に答える
0

最後に、次のことsetClassValue(Class classValue)を使用しました。使用したいクラスの Java コードにセッター () があります。次に、プロパティautowire-candidateをデフォルトfalsebeanものにしないように設定します。

<bean id="beanA" class="Class" autowire-candidate="false">
    <constructor-arg><value>valueA1</value></constructor-arg>
    <constructor-arg><value>valueA2</value></constructor-arg>
</bean>

<bean id="beanB" class="Class" >
     <constructor-arg><value>valueB1</value></constructor-arg>
     <constructor-arg><value>valueB2</value></constructor-arg>
</bean>

次に、xmlクラスの Bean を定義しているファイルで@AutowiredClass次のように JavasetClassValue(Class classValue)メソッドを使用します。

<bean id="classThatAutowire" class="ClassThatAutowire" >
    <property name="classValue" ref="beanA" />
</bean>

Java コードでは、 が@AutowiredありbeanB、次に を設定しbeanAます。これはベスト プラクティスではありませんが、機能します。

于 2013-07-15T14:55:30.203 に答える