web-dev-qa-db-ja.com

@Autowireデフォルトモード

春はどうですか@Autowire Beans:byNameまたはbyType? 1つが不可能な場合、2回目の試行は別のモードを使用して行われますか?

18
Pomario

@Autowiredアノテーションが付けられている場合、一致するタイプのBeanが注入されます(タイプが複数ある場合は例外がスローされます)。名前を指定するには、@Qualifierアノテーションを使用します。

28
Wilhelm Kleu

スプリング@Autowireタイプ別のワイヤー。名前による配線には、

@Resource(name = "id")
3
Daff

変数またはセッターメソッドのAutowiredアノテーションは、xml属性autowire="byType"と同等です。

XML属性autowirenoとしてデフォルトです

"no": 

The traditional Spring default. No automagical wiring. Bean references
must be defined in the XML file via the <ref/> element (or "ref"
attribute). We recommend this in most cases as it makes documentation
more explicit.
1
sendon1982

@AutowiredのデフォルトモードはbyTypeです。

1
YJiao

これらは、no、byName、byType、コンストラクター、および自動検出です。デフォルトのモードはありません。つまり、従来のXMLベースの構成ではデフォルトで自動配線がオフになっています。

@Autowiredアノテーションの使用-

1)プロパティの@Autowired:

@Autowiredがプロパティで使用される場合、構成ファイルのbyTypeによる自動配線と同等です。

2)プロパティセッターの@Autowired:

セッターで@Autowiredを使用する場合、構成ファイルのbyTypeによる自動配線と同等です。

3)コンストラクターの@Autowired:

@AutowiredがBeanのコンストラクターで使用される場合、構成ファイルのコンストラクターによる自動配線にも相当します。

依存関係の解決における競合には@Qualifierを使用します

ByTypeモードで自動配線を使用している場合、依存関係はプロパティクラスタイプを探すことを学びました。そのようなタイプが見つからない場合、エラーがスローされます。ただし、同じクラスタイプに2つ以上のBeanがある場合はどうなりますか。

この場合、Springはプロパティに注入する正しいBeanを選択できないため、修飾子を使用してコンテナーを支援する必要があります。

修飾子を使用して特定のBeanを解決するには、@ Autowiredアノテーションとともに@Qualifierアノテーションを使用し、アノテーションパラメーターでBean名を渡す必要があります。

0
harit