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.
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 KonstruktorSehen 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.