0

Spring Constructor Injection についてお聞きしたいです。そのため、クラスには、引数の数が異なる 2 つのコンストラクターがあります。

public class MyClassHello() {
    public MyClassHello(String A) {
        // do sth
    }

    public MyClassHello(String A, int B){
        // do sth
    }
}

1番目のコンストラクターにアクセスするためにこのように注入しようとすると、あいまいさがあるためSpringが機能しません。

<bean id="injectQuestion" class="MyClassHello">
    <constructor-arg index="0" value="A String"/>
</bean>

デバッグ コードは次のようになります。

Unsatisfied dependency expressed through constructor argument with index 1 of type [java.lang.String]: Ambiguous constructor argument types.

つまり、Spring はインデックス 1 引数が存在するかどうかを知る必要があるということですか?

同じ数の引数を持つ 2 つのコンストラクターがある通常のケースとは異なります。というように、注入時に区別するためにタイプを設定できました。

私の場合、Spring に最初のコンストラクターを強制的に選択させる方法はありますか?

どうもありがとう!!

4

1 に答える 1

0

次の名前を使用できます。

<bean id= "InjectQuestion" class = "MyClassHello">
    <constructor-arg name = "A" value="A String"/>
</bean>

<bean id= "InjectQuestion" class = "MyClassHello">
    <constructor-arg name = "A" value="A String"/>
    <constructor-arg name = "B" value="42"/>
</bean>

クラスを宣言する構文は無効であることに注意してください。また、Bean を定義するときclass="..."は、クラスの完全修飾名を使用する必要があります (たとえばpackageName.subPackage.MyClassHello、 だけではありませんMyClassHello) 。

于 2014-09-17T18:40:21.743 に答える