8

Spring では、 <bean> には属性「primary」があり、プロパティに自動配線できる複数の Bean がある場合、Bean が最初の候補であることを示します。

しかし、すべての Bean 定義が @Component/@Service などを使用して宣言されているため、Bean の宣言に使用できる対応する「プライマリ」属性が見つかりません。

どうすればこれを達成できるか教えてください、ありがとう。

4

2 に答える 2

27

Spring 3.0 では、 を使用します@Primary

複数の候補が単一値の依存関係を自動配線する資格がある場合、Bean を優先する必要があることを示します。候補の中に 'primary' Bean が 1 つだけ存在する場合、それが autowired 値になります。

Component で直接的または間接的にアノテーションが付けられた任意のクラス、または Bean でアノテーションが付けられたメソッドで使用できます。

コンポーネント スキャンが使用されていない限り、クラス レベルで Primary を使用しても効果はありません。Primary アノテーションが付けられたクラスが XML で宣言されている場合、Primary アノテーションのメタデータは無視され、 <bean primary="true|false"/>代わりに尊重されます。

参照ドキュメントを参照してください。

于 2010-01-04T10:12:29.967 に答える
4

@Primary アノテーションは、Spring 3.0 を使用している場合にのみ機能します。

Spring 2.5 では、プライマリ属性に相当するアノテーションはありません。@Qualifier アノテーションを使用して、注入する Bean を指定する必要があります。もう 1 つのオプションは、同じ目的で独自の修飾子アノテーションを定義することです。

詳細については、ドキュメントを参照してください。

于 2010-01-04T21:23:40.260 に答える