Ich habe in den letzten zwei Tagen für Dependency-Injektionen gelesen und praktiziert, aber es funktioniert nichts, und plötzlich stellte ich fest, dass einige Frameworks benötigt wurden, damit Dependency-Injection funktioniert. Ist das wahr? Ist es nicht schlecht, wenn mein Projekt von einem bestimmten Framework abhängt? Könnte es ohne die Verwendung eines Frameworks gemacht werden?
BEARBEITEN: Ich bin neu in der Programmierung, also verstehe ich nicht, was der Unterschied zwischen dem Einfügen einer Klasse und der Verwendung ihrer Methoden ist (ich brauche dafür kein Framework) und die Abhängigkeitsinjektion und was ist besser daran
EDIT: Hier ist ein Beispiel von mir nicht mit einem Framework und die Dinge funktionieren nicht TestNG @Factory Annotation + nicht genug Wissen über Dependency Injection
Sie müssen kein Framework verwenden, aber es wird Ihnen helfen, saubereren Code zu schreiben. Wenn Sie beispielsweise einen Schein in eine Klasse einfügen möchten, ohne ein Framework zu verwenden, müssen Sie dazu entweder Getter / Setter hinzufügen, sie an den Konstruktor übergeben oder öffentliche Variablen verwenden.
%Vor% Im obigen Code hängt aMethodToTest()
davon ab, was aDependentClass.someDependentMethod()
zurückgibt. Das bedeutet, dass Sie eine Kopie der Klasse A
erstellen und nachmachen sollten, was someDependentMethod
zurückgibt. Dies ist immer noch möglich, ohne ein Framework zu verwenden, zum Beispiel indem Sie einen Getter und Setter hinzufügen, so dass Sie das Objekt A in Ihrer Testklasse setzen können:
Wenn Sie zum Beispiel spring für die Abhängigkeitsinjektion verwenden, können Sie die Mock-Objekte in ihrem IOC-Container mithilfe der @Autowire
-Notation festlegen. Dann brauchen Sie keine Setter / Getter für Ihre verspotteten Objekte, die Ihnen einen saubereren Code geben.
Für die Abhängigkeitsinjektion Guice ist großartig (persönliche Meinung). Zumindest finde ich es besser als das, was Spring bietet. Es ist auch sehr leicht.
Tags und Links java dependency-injection