logo

Abhängigkeitsinjektion im Frühjahr

  1. Abhängigkeitsinjektion im Frühjahr
  2. Abhängigkeitssuche
  3. Abhängigkeitsspritze

Dependency Injection (DI) ist ein Entwurfsmuster, das die Abhängigkeit vom Programmiercode entfernt, sodass die Anwendung einfacher verwaltet und getestet werden kann. Durch die Abhängigkeitsinjektion ist unser Programmiercode lose gekoppelt. Um den DI besser zu verstehen, verstehen wir zunächst den Dependency Lookup (DL):

Abhängigkeitssuche

Die Abhängigkeitssuche ist ein Ansatz, bei dem wir die Ressource nach Bedarf erhalten. Es gibt verschiedene Möglichkeiten, die Ressource zu erhalten, zum Beispiel:

 A obj = new AImpl(); 

Auf diese Weise erhalten wir die Ressource (Instanz der A-Klasse) direkt über das neue Schlüsselwort. Eine andere Möglichkeit ist die Factory-Methode:

 A obj = A.getA(); 

Auf diese Weise erhalten wir die Ressource (Instanz der A-Klasse), indem wir die statische Factory-Methode getA() aufrufen.

Alternativ können wir die Ressource über JNDI (Java Naming Directory Interface) abrufen als:

 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A'); 

Es gibt verschiedene Möglichkeiten, die Ressource zu erhalten, um die Ressource zu erhalten. Sehen wir uns das Problem dieses Ansatzes an.

Auswahl sortieren Java

Probleme der Abhängigkeitssuche

Bei der Abhängigkeitssuche gibt es hauptsächlich zwei Probleme.

    enge KopplungDurch den Ansatz der Abhängigkeitssuche ist der Code eng gekoppelt. Wenn die Ressource geändert wird, müssen wir viele Änderungen am Code vornehmen.Nicht einfach zum TestenDieser Ansatz führt beim Testen der Anwendung zu vielen Problemen, insbesondere beim Black-Box-Testen.

Abhängigkeitsspritze

Die Dependency Injection ist ein Entwurfsmuster, das die Abhängigkeit der Programme beseitigt. In diesem Fall stellen wir die Informationen aus einer externen Quelle wie einer XML-Datei bereit. Dadurch ist unser Code lose gekoppelt und einfacher zu testen. In diesem Fall schreiben wir den Code wie folgt:

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } } 

In einem solchen Fall wird die Instanz der Address-Klasse von einer externen Quelle wie einer XML-Datei entweder durch einen Konstruktor oder eine Setter-Methode bereitgestellt.

Zwei Möglichkeiten, die Abhängigkeitsinjektion im Spring-Framework durchzuführen

Das Spring-Framework bietet zwei Möglichkeiten, Abhängigkeiten einzufügen

  • Vom Konstrukteur
  • Nach der Setter-Methode

Kommende Themen in Spring Dependency Injection

Abhängigkeitsinjektion durch Konstruktor

Sehen wir uns an, wie wir Abhängigkeiten per Konstruktor injizieren können.


Abhängigkeitsinjektion durch Setter-Methode

Sehen wir uns an, wie wir mit der Setter-Methode Abhängigkeiten injizieren können.