春の自動配線ビーン

春の自動配線Bean

Springフレームワークでは、自動配線機能を使用してBeanを自動的にワイヤリングできます。 これを有効にするには、で「autowire」属性を定義するだけです。

    

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を使用する方が適切です。