Benötige ich ein Framework, um Dependency Injection zu verwenden? [Duplikat]

8

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

    
J. K. 12.08.2013, 11:17
quelle

3 Antworten

5

Nein, Sie müssen kein Framework verwenden:

Dependency Injection

Natürlich können Sie auch ein Framework verwenden. Wie jemand sagte, können Sie Spring Framework verwenden und ihre Anmerkungen verwenden. Hier haben Sie ein Tutorial:

Dependency Injection mit dem Spring Framework

    
John 12.08.2013, 11:24
quelle
2

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:

%Vor%

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.

    
John Snow 12.08.2013 11:37
quelle
0

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.

Ссылка

    
quelle

Tags und Links