English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erfahrungsnachrichten
Abhängigkeitseinjektion (DI) ist ein Designmuster, das es ermöglicht, Abhängigkeiten aus dem Programmcode zu entfernen, um Anwendungen leicht zu verwalten und zu testen. Abhängigkeitseinjektion macht unseren Programmcode lose gekoppelt. Um DI besser zu verstehen, lassen Sie uns zunächst die Abhängigkeitssuche (DL) kennenlernen:
A obj = new AImpl();
Dadurch können wir Ressourcen durch die direkte Verwendung des new-Schlüsselworts erhalten (Einzelheit der Klasse A). Eine andere Methode ist die Fabrikmethode:
A obj = A.getA();
Dadurch können wir Ressourcen durch Aufruf der statischen Fabrikmethode getA() erhalten (Einzelheit der Klasse A).
Oder wir können Ressourcen über JNDI (Java Naming and Directory Interface) erhalten. :
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup("java:comp"/env); A obj = (A) environmentCtx.lookup("A");
Es gibt mehrere Methoden, um Ressourcen zu erhalten. Lassen Sie uns die Probleme dieser Methode betrachten.
Es gibt hauptsächlich zwei Probleme bei der Suche nach Abhängigkeiten.
Eng gekoppelt: Die Methode zur Suche nach Abhängigkeiten führt zu einer engen Kopplung des Codes. Wenn Ressourcen geändert werden, müssen viele Änderungen am Code vorgenommen werden. Der Test ist nicht einfach: Diese Methode kann bei der Testung von Anwendungen viele Probleme verursachen, insbesondere bei Black-Box-Tests.
Abhängigkeitsinjektion ist ein Designmuster, das Prozesse eliminiert. In diesem Fall stellen wir Informationen aus externen Quellen (z.B. XML-Dateien) bereit. Es macht unseren Code lose gekoppelt und einfacher zu testen. In diesem Fall schreiben wir den Code so, dass:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
In diesem Fall wird das Beispiel der Klasse Address durch eine externe Quelle (z.B. XML-Datei) durch Konstruktor oder Setter-Methode bereitgestellt.
Die Spring-Framework bietet zwei Methoden zur Injektion von Abhängigkeiten.
Durch Konstruktor Durch Setter-Methode