Automatische Auto-Wiring-Beans mit Annotation @Autowired

Spring Auto-Wiring Beans mit @Autowired-Annotation

Im Beispiel des letztenSpring auto-wiring in XMLwird die übereinstimmende Eigenschaft einer Bean im aktuellen Spring-Container automatisch verdrahtet. In den meisten Fällen ist möglicherweise nur für eine bestimmte Bean eine automatische Verdrahtung erforderlich.

In Spring können Sie die Annotation@Autowiredverwenden, um die Bean-Methode für die Setter-Methode, den Konstruktor oder ein Feld automatisch zu verdrahten. Darüber hinaus kann es in einer bestimmten Bohne automatisch verdrahtet werden.

Note
Die Annotation @Autowired verdrahtet die Bean automatisch, indem sie dem Datentyp entspricht.

Das folgende vollständige Beispiel zeigt die Verwendung von@Autowired.

1. Bohnen

Eine Kunden-Bean, die in der Bean-Konfigurationsdatei deklariert ist. Später werden Sie "@Autowired" verwenden, um eine Personen-Bean automatisch zu verkabeln.

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. Registrieren Sie AutowiredAnnotationBeanPostProcessor

Um@Autowired zu aktivieren, müssen Sie 'AutowiredAnnotationBeanPostProcessor' registrieren. Dies kann auf zwei Arten geschehen:

1. Schließen Sie ein

Fügen Sie den Spring-Kontext und in die Bean-Konfigurationsdatei ein.


    //...

    
    //...

Vollständiges Beispiel



    

    
        
        
    

    
        
        
        
    

2. Schließen Sie AutowiredAnnotationBeanPostProcessor ein

Fügen Sie "AutowiredAnnotationBeanPostProcessor" direkt in die Bean-Konfigurationsdatei ein.





    
        
        
    

    
        
        
        
    

3. @Autowired Beispiele

Jetzt können Sie Bean über@Autowired automatisch verdrahten und es kann auf die Setter-Methode, den Konstruktor oder ein Feld angewendet werden.

1. @Autowired Setter-Methode
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 Construtor
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 Feld
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
}

Das obige Beispiel wird automatisch "PersonBean" in die Personeneigenschaft des Kunden verkabelt.

Starte es

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);

    }
}

Ausgabe

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

Abhängigkeitsprüfung

Standardmäßig führt @Autowired die Abhängigkeitsprüfung durch, um sicherzustellen, dass die Eigenschaft ordnungsgemäß verkabelt wurde. Wenn Spring keine passende Bohne für den Draht finden kann, wird eine Ausnahme ausgelöst. Um dies zu beheben, können Sie diese Überprüfungsfunktion deaktivieren, indem Sie das Attribut "required" von @Autowired auf "false" setzen.

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
}

Wenn der Spring im obigen Beispiel keine passende Bean finden kann, wird die Eigenschaft person nicht gesetzt.

@Qualifier

Die @Qualifier-Annotation dient zur Steuerung, welche Bean auf einem Feld automatisch verdrahtet werden soll. Beispiel: Bean-Konfigurationsdatei mit zwei ähnlichen Person-Beans.



    

    
        
        
    

    
        
        
        
    

    
        
        
        
    

Weiß Spring, welche Bohne verdrahtet werden soll?

Um dies zu beheben, können Sie@Qualifier verwenden, um eine bestimmte Bean automatisch zu verkabeln, z.

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
}

Dies bedeutet, dass die Bean "PersonBean1" automatisch in die Personeneigenschaft des Kunden verdrahtet wird. Lesen Sie dieses vollständige Beispiel -Spring Autowiring @Qualifier example

Fazit

Diese Annotation von@Autowired ist sehr flexibel und leistungsstark und definitiv besser als das Attribut "autowire" in der Bean-Konfigurationsdatei.

Quellcode herunterladen

Laden Sie es herunter -Spring-Autowired-Annotation-Example.zip (6 KB)