Spring では、 <bean> には属性「primary」があり、プロパティに自動配線できる複数の Bean がある場合、Bean が最初の候補であることを示します。
しかし、すべての Bean 定義が @Component/@Service などを使用して宣言されているため、Bean の宣言に使用できる対応する「プライマリ」属性が見つかりません。
どうすればこれを達成できるか教えてください、ありがとう。
Spring では、 <bean> には属性「primary」があり、プロパティに自動配線できる複数の Bean がある場合、Bean が最初の候補であることを示します。
しかし、すべての Bean 定義が @Component/@Service などを使用して宣言されているため、Bean の宣言に使用できる対応する「プライマリ」属性が見つかりません。
どうすればこれを達成できるか教えてください、ありがとう。
Spring 3.0 では、 を使用します@Primary
。
複数の候補が単一値の依存関係を自動配線する資格がある場合、Bean を優先する必要があることを示します。候補の中に 'primary' Bean が 1 つだけ存在する場合、それが autowired 値になります。
Component で直接的または間接的にアノテーションが付けられた任意のクラス、または Bean でアノテーションが付けられたメソッドで使用できます。
コンポーネント スキャンが使用されていない限り、クラス レベルで Primary を使用しても効果はありません。Primary アノテーションが付けられたクラスが XML で宣言されている場合、Primary アノテーションのメタデータは無視され、
<bean primary="true|false"/>
代わりに尊重されます。
参照ドキュメントを参照してください。
@Primary アノテーションは、Spring 3.0 を使用している場合にのみ機能します。
Spring 2.5 では、プライマリ属性に相当するアノテーションはありません。@Qualifier アノテーションを使用して、注入する Bean を指定する必要があります。もう 1 つのオプションは、同じ目的で独自の修飾子アノテーションを定義することです。
詳細については、ドキュメントを参照してください。