@Autowiredアノテーションを持つSpring自動配線Bean

@Autowiredアノテーションを使用したSpring Auto-Wiring Bean

最後のSpring auto-wiring in XMLの例では、現在のSpringコンテナ内の任意のBeanの一致したプロパティを自動配線します。 ほとんどの場合、特定のBeanのみで自動配線プロパティが必要になる場合があります。

Springでは、@Autowiredアノテーションを使用して、setterメソッド、コンストラクター、またはフィールドでBeanを自動配線できます。 さらに、特定のBeanのプロパティを自動配線できます。

Note
@Autowiredアノテーションは、データ型を照合することによってBeanを自動配線します。

@Autowiredの使用法を示すには、次の完全な例を参照してください。

1. 豆

カスタマーBean。Bean構成ファイルで宣言されています。 後で、「@Autowired」を使用して、PersonBeanを自動配線します。

package com.example.common;

public class Customer
{
    //you want autowired this field.
    private Person person;

    private int type;
    private String action;

    //getter and setter method

}


    
        
        
    

    
        
        
        
    

2. AutowiredAnnotationBeanPostProcessorを登録する

@Autowiredを有効にするには、 ‘AutowiredAnnotationBeanPostProcessor‘を登録する必要があり、次の2つの方法で登録できます。

1. を含める

Bean構成ファイルにSpringコンテキストとを追加します。


    //...

    
    //...

完全な例、



    

    
        
        
    

    
        
        
        
    

2. AutowiredAnnotationBeanPostProcessorを含める

Bean構成ファイルに「AutowiredAnnotationBeanPostProcessor」を直接含めます。





    
        
        
    

    
        
        
        
    

3. @Autowiredの例

これで、@Autowiredを介してBeanを自動配線でき、setterメソッド、コンストラクター、またはフィールドに適用できます。

1. @Autowiredセッターメソッド
package com.example.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer
{
    private Person person;
    private int type;
    private String action;
    //getter and setter methods

    @Autowired
    public void setPerson(Person person) {
        this.person = person;
    }
}
2. @Autowiredコンストラクター
package com.example.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer
{
    private Person person;
    private int type;
    private String action;
    //getter and setter methods

    @Autowired
    public Customer(Person person) {
        this.person = person;
    }
}
3. @Autowiredフィールド
package com.example.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer
{
    @Autowired
    private Person person;
    private int type;
    private String action;
    //getter and setter methods
}

上記の例は、「PersonBean」を顧客の個人プロパティに自動配線します。

それを実行します

package com.example.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App
{
    public static void main( String[] args )
    {
        ApplicationContext context =
          new ClassPathXmlApplicationContext(new String[] {"SpringBeans.xml"});

        Customer cust = (Customer)context.getBean("CustomerBean");
        System.out.println(cust);

    }
}

出力

Customer [action=buy, type=1,
person=Person [address=address 123, age=28, name=example]]

依存性チェック

デフォルトでは、@ Autowiredは依存関係チェックを実行して、プロパティが適切に配線されていることを確認します。 Springがワイヤリングする一致するBeanを見つけられない場合、例外をスローします。 これを修正するには、@ Autowiredの「required」属性をfalseに設定して、このチェック機能を無効にすることができます。

package com.example.common;

import org.springframework.beans.factory.annotation.Autowired;

public class Customer
{
    @Autowired(required=false)
    private Person person;
    private int type;
    private String action;
    //getter and setter methods
}

上記の例では、Springが一致するBeanを見つけられない場合、personプロパティが未設定のままになります。

@Qualifier

どのBeanをフィールドで自動配線するかを制御するために使用した@Qualifierアノテーション。 たとえば、2つの同様の個人Beanを持つBean構成ファイル。



    

    
        
        
    

    
        
        
        
    

    
        
        
        
    

SpringはどのBeanを配線する必要があるかを知っていますか?

これを修正するには、@Qualifierを使用して、特定のBeanを自動配線します。たとえば、

package com.example.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class Customer
{
    @Autowired
    @Qualifier("PersonBean1")
    private Person person;
    private int type;
    private String action;
    //getter and setter methods
}

つまり、Bean「PersonBean1」は顧客の個人プロパティに自動接続されます。 この完全な例を読む–Spring Autowiring @Qualifier example

結論

この@Autowiredアノテーションは非常に柔軟で強力であり、Bean構成ファイルの「autowire」属性よりも間違いなく優れています。

ソースコードをダウンロード

ダウンロード–Spring-Autowired-Annotation-Example.zip(6 KB)