春の自動配線Bean
Springフレームワークでは、自動配線機能を使用してBeanを自動的にワイヤリングできます。 これを有効にするには、
Springでは、5つの自動配線モードがサポートされています。
-
no –デフォルト、自動配線なし、「ref」属性を使用して手動で設定します
-
byName –プロパティ名による自動配線。 Beanの名前が他のBeanプロパティの名前と同じである場合、それを自動的に配線します。
-
byType –プロパティデータタイプによる自動配線。 Beanのデータ型が他のBeanプロパティのデータ型と互換性がある場合、それを自動配線します。
-
コンストラクター-コンストラクター引数のbyTypeモード。
-
autodetect –デフォルトのコンストラクターが見つかった場合は、「コンストラクターによる自動配線」を使用します。それ以外の場合は、「タイプ別自動配線」を使用します。
例
自動配線のデモンストレーション用のCustomerおよびPersonオブジェクト。
package com.example.common; public class Customer { private Person person; public Customer(Person person) { this.person = person; } public void setPerson(Person person) { this.person = person; } //... }
package com.example.common; public class Person { //... }
1. 自動配線「いいえ」
これはデフォルトのモードです。「ref」属性を介してBeanを配線する必要があります。
2. 自動配線「byName」
プロパティ名でBeanを自動配線します。 この場合、「person」Beanの名前は「customer」Beanのプロパティ(「person」)の名前と同じであるため、Springはsetterメソッド「setPerson(Person person)
」を使用して自動配線します。
完全な例を参照してください–Spring Autowiring by Name。
3. 自動配線「byType」
プロパティデータタイプごとにBeanを自動接続します。 この場合、「person」Beanのデータ型は「customer」Beanのプロパティ(Personオブジェクト)のデータ型と同じであるため、Springはsetterメソッド「setPerson(Person person)
」を介して自動配線します。
完全な例を参照してください–Spring Autowiring by Type。
4. 自動配線「コンストラクタ」
コンストラクター引数のプロパティデータ型によってBeanを自動配線します。 この場合、「person」Beanのデータ型は「customer」Beanのプロパティ(Personオブジェクト)のコンストラクター引数データ型と同じであるため、Springはコンストラクターメソッド「public Customer(Person person)
」を介して自動配線しました。
完全な例を参照してください–Spring Autowiring by Constructor。
5. 自動配線「自動検出」
デフォルトのコンストラクタが見つかった場合、「コンストラクタ」を使用します。それ以外の場合は、「byType」を使用します。 この場合、「Customer」クラスにデフォルトのコンストラクターがあるため、Springはコンストラクターメソッド「public Customer(Person person)
」を介してそれを自動配線しました。
完全な例を参照してください–Spring Autowiring by AutoDetect。
Note
プロパティが常に正常に自動配線されるように、「自動配線」と「依存関係チェック」の両方を組み合わせるのは常に良いことです。
結論
私の見解では、Springの「自動配線」は多大なコストで開発を高速化します。これにより、Bean構成ファイル全体が複雑になり、どのBeanでどのBeanが自動配線されるかもわかりません。
実際には、手動で配線するのではなく、常にクリーンで完全に機能するか、より柔軟で推奨される@Autowired annotationを使用する方が適切です。