2011-10-25 9 views
1

私は2つのインプリメンテーションを持っています。両方の実装に@Componentでアノテーションを付けます。 @Autowiredがデフォルトとして注入するときに、どのようにそれらのうちの特定のものをデフォルトのbeanにすることができますか?デフォルトのオートワイヤー@Component

おかげで、あなたがより高い優先順位を与えられたと思うBeanの

答えて

2

使用@Primary注釈。 DOCから

は複数 候補が単一値の依存性をautowireするために修飾されたときにBeanが優先されるべきであることを示します。 の場合、正確に1つの「プライマリ」Beanが候補の中に存在する場合、それは のautowired値になります。

コンポーネントまたはBeanで注釈が付けられたメソッドに直接的または間接的に注釈が付けられたクラスで使用できます。

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

+0

ありがとうございました。残念ながら、私たちのプロジェクトではSpring 2.5を使用しています。だから、私は修飾子を使う必要があるようだ: '( –

0

Autowired works by "type"。正確に1つのBeanが一致したときに自動出力できます。複数のBeanが一致する場合は、Autowired + Qualifierアノテーションを使用します。修飾子は、autowireするBeanの名前を呼び出します。

これは、コンポーネントの宣言時にも同様に名前を付ける必要があることを意味します。

関連する問題