Heim > Java > javaLernprogramm > Warum wird die Konstruktor- oder Setter-Injektion im Frühjahr der Feldinjektion vorgezogen?

Warum wird die Konstruktor- oder Setter-Injektion im Frühjahr der Feldinjektion vorgezogen?

DDD
Freigeben: 2024-12-08 01:54:12
Original
284 Leute haben es durchsucht

Why Is Constructor or Setter Injection Preferred Over Field Injection in Spring?

Was ist Feldinjektion und warum wird sie im Allgemeinen nicht bevorzugt?

In Spring MVC- und Portlet-Anwendungen bezieht sich Feldinjektion auf die Praxis, eine Abhängigkeit direkt in ein mit Anmerkungen versehenes Feld einzufügen mit @Autowired, wie im folgenden Beispiel gezeigt:

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}
Nach dem Login kopieren

Alternativ beinhaltet die Konstruktorinjektion die Übergabe der Abhängigkeit als Parameter im Konstruktor:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart) {
        this.cart = cart;
    }
}
Nach dem Login kopieren

Vorteile und Nachteile:

Konstruktorinjektion bietet mehrere Vorteile:

  • Unveränderlichkeit: Es ermöglicht die Erstellung unveränderlicher Objekte, wenn die Abhängigkeiten zugewiesen werden Instanziierung.
  • Lose Kopplung:Klassen haben eine lockere Abhängigkeit vom DI-Container und können außerhalb davon verwendet werden.
  • Testbarkeit:Objekte können für Unit-Tests instanziiert werden, ohne dass eine Reflexion erforderlich ist.

Setter-Injektion ist ebenfalls eine Option und stellt einen Mechanismus bereit zum Injizieren von Abhängigkeiten, die optional oder im Laufe der Zeit veränderbar sein können.

Im Gegensatz dazu hat die Feldinjektion mehrere Nachteile:

  • Enge Kopplung: Es entsteht eine enge Kopplung mit dem DI-Container.
  • Unveränderlichkeit: Es behindert die Erstellung von Unveränderlichkeit Objekte.
  • Reflexionsanforderung: Es erfordert Reflexion für die Instanziierung außerhalb des DI-Containers.
  • Versteckte Abhängigkeiten: Echte Abhängigkeiten werden von der Schnittstelle verdeckt.
  • Zu viele Abhängigkeiten: Es fördert die Hinzufügung übermäßiger Abhängigkeiten Abhängigkeiten, was gegen das Prinzip der Einzelverantwortung verstößt.

Injektionsrichtlinien:

Spring empfiehlt die folgenden Richtlinien:

  • Verwenden Sie die Konstruktorinjektion für obligatorische Abhängigkeiten oder zum Erreichen von Unveränderlichkeit.
  • Setter-Injection optional verwenden oder veränderliche Abhängigkeiten.
  • Feldinjektion in den meisten Fällen vermeiden.

Fazit:

In Anbetracht der Nachteile der Feldinjektion ist dies im Allgemeinen der Fall Es empfiehlt sich, die Konstruktor- oder Setter-Injektion zu bevorzugen. Die Bequemlichkeit der Feldinjektion wird durch ihre möglichen Nachteile und Einschränkungen aufgewogen.

Das obige ist der detaillierte Inhalt vonWarum wird die Konstruktor- oder Setter-Injektion im Frühjahr der Feldinjektion vorgezogen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage