コンストラクター注入を使用して、Spring コンテキストで構成しようとしている Bean があります。コンストラクター引数の 1 つにサブクラスを渡すと、"type" 属性を指定しない場合にのみ、Spring コンテナーによって Bean がインスタンス化されます。誰が何が悪いのか分かりますか?以下は、より具体的なものです。
class MyClass{
public MyClass(SomeAbstractBase absObject){
//do stuff
}
}
class ConcreteClass extends SomeAbstractBase{
//
}
Spring 構成 (1 番目と 2 番目は機能しませんが、type 属性を使用する 3 番目は機能します)- 構成 I-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg type="ConcreteClass" ref="concreteclass"/>
</bean>
コンフィグⅡ-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg type="SomeAbstractBase" ref="concreteclass"/>
</bean>
コンフィグⅢ-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg ref="concreteclass"/>
</bean>
初期化時に次の例外が発生します-
スレッド「メイン」での例外 org.springframework.beans.factory.BeanCreationException: クラスパス リソース [cache-spring-config.xml] で定義された名前 'jedispool' を持つ Bean の作成中にエラーが発生しました: 一致するコンストラクターを解決できませんでした (ヒント: index/ を指定してください)タイプのあいまいさを避けるための単純なパラメーターのタイプ/名前引数)
最初の構成も 2 番目の構成も機能しないのはなぜですか?
ありがとうございました