[JAVA] Spring Autowired wird im Konstruktor geschrieben

Überblick

Autowired-Annotationen, die bei DI im Frühjahr verwendet werden, sind einfach zu verwenden und bequem, nicht wahr? Es gibt jedoch mehrere Möglichkeiten, es zu verwenden, und ich weiß nicht, welche ich verwenden soll. Ich benutze es oft in Konstruktoren, aber ich möchte herausfinden, wie das passiert ist.

So konfigurieren Sie Autowired

Grobe Bewertung. Es gibt drei Möglichkeiten, Autowired einzustellen.

Feldinjektion

Dies ist eine Art Deklarationsmethode, die direkt in das Feld geschrieben wird.

public class A {
    @Autowired
    private B b;
}

Konstruktorinjektion

Dies ist die Art der Deklarationsmethode, die in den Konstruktor geschrieben werden soll.

public class A {
    private final B b;

    @Autowired
    public A(B b) {
        this.b = b;
    }
}

Setter-Injektion

Dies ist eine Art Deklarationsmethode, die in den Setter geschrieben werden soll.

public class A {
   private B b;
   
   @Autowired
   public void setB(B b) {
       this.b = b;
   }
}

Warum Konstruktorinjektion wählen?

Sie können final für das Feld verwenden und Unveränderlichkeit garantieren. Der Grund dafür ist großartig. Auf diese Weise ist es sicher, da es während der Verarbeitung nicht neu geschrieben wird. (Auch wenn Sie die Wartung nicht verstehen, wird beim Umschreiben von final ein Kompilierungsfehler angezeigt. Wirklich) Es ist auch toll, dass Sie einen neuen Test machen können. Persönlich bin ich froh, im Test zwischen DI und einfach neu wählen zu können.

Im Gegenteil, es ist nicht gut, eine Feldinjektion zu verwenden

Erstens wird es vom Beamten nicht empfohlen. (Sicher) Es hätte keinen Sinn, es zu benutzen.

Ich vertraue nicht darauf, dass die Probenquelle die Feldinjektion verwendet. Ich persönlich finde es nicht gut. (Es ist wirklich einfach)

Zusammenfassung

Lassen Sie uns die Konstruktorinjektion verwenden, ohne die Quelle satt zu haben.

Recommended Posts

Spring Autowired wird im Konstruktor geschrieben
Was ist @Autowired im Spring Boot?
[Spring Boot] Bis @Autowired in der Testklasse [JUnit5] ausgeführt wird
Wofür ist der Konstruktor?
Die Ereignisverarbeitung wird im Frühjahr durchgeführt.
Memo nach dem ersten Frühlingsprojekt-Was ist Frühling-
Was ist die Hauptmethode in Java?
Die Ruby-Version wird in der .rbenv / version-Datei verwaltet
Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)
Festlegen, wann in junit "Der Konstruktor Empty () ist nicht sichtbar" auftritt
Der offizielle Name von Spring MVC ist Spring Web MVC
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Das @ Import-Ziel wird im Frühjahr als @ Konfiguration behandelt
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Wenn das Projekt nicht in Eclipse angezeigt wird
Ebean.update () wird im geerbten Modell nicht ausgeführt.
Holen Sie sich im Frühjahr mehrere Ressourcen, die dem Muster entsprechen
Geben Sie die statische Ressourcencodierung in Spring Boot an
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
In Time.strptime ist% j (Gesamtdatum des Jahres)
Einfacher Einsteckmechanismus im Frühjahr, berücksichtigen Sie auch die Reihenfolge
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
Was ist besser, Kotlin oder zukünftiges Java?
Gibt es eine Instanz, auch wenn der Konstruktor ausfällt?
Machen Sie die where-Klauselvariable in Spring Data JPA
Lassen Sie uns zusammenfassen, warum eine Konstruktorinjektion empfohlen wird
[Android] Die Datenbindungsvariable wird in camelCase geschrieben
ORA-08177, wenn Spring Batch kontinuierlich in Oracle ausgeführt wird
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
Warum die get-Methode in der Calendar-Klasse benötigt wird
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Was ist ein Konstruktor?
Was ist Spring Tools 4?
Verwenden Sie Interceptor im Frühjahr
Microservices in Spring Cloud
Holen Sie sich Cookies im Frühling
Spring Boot 1.x wird im nächsten Jahr EOL erreichen.
Erfahren Sie mehr über Spezifikationen, während Sie FizzBuzz verkürzen, das in Java geschrieben wurde
Fügen Sie die Datei in die Eigenschaften eines Strings mit Spring XML-Konfiguration ein
Der Fall, dass @Autowired in JUnit5 nicht verwendet werden konnte
Greifen Sie dynamisch auf die durch die Zeichenfolge in Spring BeanWrapper angegebene Eigenschaft zu
Was ist die Darstellung von Domänenwissen im [DDD] -Modell?
Verhalten, wenn jedes im umgekehrten Bereich ausgeführt wird
[Spring Data JPA] Die benutzerdefinierte ID wird zum Zeitpunkt der Registrierung in einer eindeutigen Reihenfolge zugewiesen.
Wirf eine Ausnahme und fange, wenn es keinen Handler gibt, der dem Pfad im Frühjahr entspricht