春はどうですか@Autowire
Beans:byNameまたはbyType? 1つが不可能な場合、2回目の試行は別のモードを使用して行われますか?
@Autowired
アノテーションが付けられている場合、一致するタイプのBeanが注入されます(タイプが複数ある場合は例外がスローされます)。名前を指定するには、@Qualifier
アノテーションを使用します。
スプリング@Autowire
タイプ別のワイヤー。名前による配線には、
@Resource(name = "id")
変数またはセッターメソッドのAutowired
アノテーションは、xml属性autowire="byType"
と同等です。
XML属性autowire
はno
としてデフォルトです
"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.
@Autowired
のデフォルトモードはbyType
です。
これらは、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名を渡す必要があります。