Heim > Java > javaLernprogramm > Wie funktioniert die @Autowired-Annotation von Spring und welche Best Practices gibt es für deren Verwendung?

Wie funktioniert die @Autowired-Annotation von Spring und welche Best Practices gibt es für deren Verwendung?

Susan Sarandon
Freigeben: 2024-12-18 17:42:10
Original
594 Leute haben es durchsucht

How Does Spring's @Autowired Annotation Work, and What are the Best Practices for Using It?

Enthüllung der Nuancen des Frühlings @Autowired: Ein umfassender Leitfaden

Im Reich des Frühlings steht @Autowired als kraftvolle Anmerkung, die vereinfacht Bean-Wiring, wodurch Entwicklern die manuelle Konfiguration von XML-Dateien erspart bleibt. Allerdings kann es für Uneingeweihte eine verwirrende Aufgabe sein, die komplizierten Funktionsweisen zu verstehen.

Beispielanalyse

Bedenken Sie die bereitgestellten Codebeispiele:

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
}

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public void prepare(MovieCatalog movieCatalog,
                    CustomerPreferenceDao customerPreferenceDao) {
        this.movieCatalog = movieCatalog;
        this.customerPreferenceDao = customerPreferenceDao;
    }
}
Nach dem Login kopieren

In diesen Beispielen fügt @Autowired Bean-Abhängigkeiten in Felder oder Setter-Methoden ein. Durch die Angabe, dass Beans automatisch verdrahtet werden sollen, erkennt Spring automatisch die erforderlichen Beans und ordnet sie zu, wodurch Entwickler von der expliziten Bean-Verkabelung entlastet werden.

Autowiring verstehen

Um die automatische Verdrahtung zu aktivieren, führt Spring aus Scannen von Komponenten basierend auf dem bereitgestellten Basispaket, wobei annotierte Klassen (z. B. @Component, @Controller) als potenzielle Beans erkannt werden. Während des Scanvorgangs werden @Autowired-Annotationen identifiziert, die Eigenschaften oder Methoden als Injektionspunkte markieren.

Wenn Beans erstellt werden, durchläuft Spring die Autowired-Eigenschaften oder -Methoden und sucht nach Beans passender Typen. Wenn mehrere Beans desselben Typs vorhanden sind, wird eine Ausnahme ausgelöst, es sei denn, @Qualifier wird verwendet, um die gewünschte Bean anzugeben.

Autowiring-Beispiele

Um Autowiring-Szenarien zu veranschaulichen, berücksichtigen Sie Folgendes: Das folgende Beispiel:

interface Color {
    void design();
}

class Red implements Color {
    @Override
    public void design() {
        // Red design logic
    }
}

class Blue implements Color {
    @Override
    public void design() {
        // Blue design logic
    }
}

class MainClass {
    @Autowired
    private Color color;

    public static void main(String[] args) {
        MainClass mainClass = new MainClass();
        mainClass.color.design(); // Red or Blue?
    }
}
Nach dem Login kopieren

In diesem Beispiel implementieren sowohl Rot als auch Blau die Farbschnittstelle. Die Annotation @Autowired auf MainClass.color gibt an, dass Spring automatisch eine Instanz der Color-Schnittstelle einfügen soll. Ohne weitere Anleitung kann Spring jedoch nicht bestimmen, welche spezifische Implementierung eingefügt werden soll.

Um diese Mehrdeutigkeit zu beseitigen, müssen @Qualifier- oder @Resource-Annotationen genutzt werden:

Verwendung von @Qualifier

@Qualifier("redBean")
class Red implements Color {}

@Qualifier("blueBean")
class Blue implements Color {}
Nach dem Login kopieren

Bei Verwendung in MainClass schränkt @Qualifier die Autowiring-Auswahlmöglichkeiten ein und stellt so sicher, dass die Red-Implementierung erfolgt wird verwendet.

Verwendung von @Resource

@Resource(name="redBean")
private Color color;
Nach dem Login kopieren

@Resource kombiniert die Annotationen @Autowired und @Qualifier und fügt die Bean mit dem Namen „redBean“ ein.

Best Practices

Für optimale Autowiring-Praktiken Beachten Sie diese Richtlinien:

  • Verwenden Sie @Inject anstelle von @Autowired, da es dem JSR-330-Standard entspricht und nicht Spring-spezifisch ist.
  • Annotieren Sie Konstruktoren anstelle von Methoden, um dies zu ermöglichen Nullprüfungen und frühzeitige Fehlererkennung.

Das obige ist der detaillierte Inhalt vonWie funktioniert die @Autowired-Annotation von Spring und welche Best Practices gibt es für deren Verwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage