私は春の注釈に関連する質問があります。私の(学習)プロジェクトでは、2つのクラスと、これらのタイプのそれぞれの2つのプロパティを持つ別のクラスを定義しました。 エラーを生成するために、XML内に同じクラス型の2つのBeanを定義していますが、Setterメソッドで@Autowiredアノテーションを使用しています。このような何か:メインクラスで春の注釈名前で
<bean id="classA" class="beans.ClassA"></bean>
<bean id="otherclassA" class="beans.ClassA"></bean>
<bean id="classB" class="beans.ClassB"></bean>
public class UpperClass{
private ClassA classA;
private ClassB classB;
@Autowired
public void setClassA(ClassA classA){this.classA = classA}
@Autowired
public void setClassB(ClassB classB){this.classB = classB}
/* .
.
.
*/
}
、私はこのBeanののApplicationContextのインスタンスを取得し、toStringメソッド、簡単なテストをオーバーライドプロパティの内容を印刷します。 私はSpring Autowiredアノテーションが型別にBeanを探すので、ClassAクラスのBeanが2つ定義されているため、テストは失敗するはずですが、機能します。 @Resourceアノテーションを使用しても、名前は使用されません。
私はSpringバージョン4を使用しています。 私はbeanのidをclass/settersの名前と一致しないように変更しましたが、期待通りに失敗します。
誰かが私になぜ、または私が間違っているのか教えてもらえますか? beanがByTypeを見つけられない場合、SpringがbyNameを参照していますか?
xmlの最初のBeanのIDを変更して、何が起こるかを確認してください。 – Jason
私は、Bean IDの代わりにクラスを変更すると、エラーを得るためにsetterパラメータの名前を変更するだけでなく、setterメソッド名もBean IDと一致しないように変更する必要があることがわかりました。 – jgonzal