Die derzeit am besten bewertete Antwort auf eine sehr aktuelle Frage besagt dies
DI-Container sind ein "Unternehmenssoftware" -Muster, das verwendet wird, wenn das Objektdiagramm sehr groß und komplex ist. Ich vermute, dass 95% der Anwendungen dies nicht erfordern.
Dem stimme ich überhaupt nicht zu. Vielleicht habe ich die Terminologie falsch verstanden, aber für mich bedeutet DI-Framework nur "etwas, das meine Objekte miteinander verbindet". Vermisse ich etwas
Ich benutze Guice sogar für wirklich kleine Projekte (wie 10 Klassen), um sie zu vereinfachen . Sicher, es ist eine 400-kB-JAR-Datei, aber das ist mir egal. Für ein kleines Projekt brauche ich kaum eine Konfiguration und der einzige "Overhead" ist das Hinzufügen der @Inject
Anmerkung.
Ich frage mich also wirklich, welche zusätzliche Komplexität DI-Frameworks verursachen.
Update Adressierung der Antworten
In einem 82-Klassen-Projekt habe ich
- 32
@Inject
Anmerkungen - 15
@Singleton
und 1@ProvidedBy
Anmerkungen - 4 Anbieter (alle würde ich auch ohne DI brauchen, da sie meine Fabriken sind)
- 1 Modul mit einer einzelnen Zeile
- 0 Zeilen XML !!!
Das ist alles. Sicher, es ist ein kleines Projekt, aber genau das war mein Punkt. Die zusätzliche Arbeit bestand eher aus ein paar Worten als aus Zeilen .
Ich verwende ausschließlich Konstruktorinjektion, um unveränderliche "unbeschwerte" Objekte zu erhalten. Immer wenn eine neue Abhängigkeit auftritt, füge ich ein letztes Feld hinzu, lasse Lomboks RequiredArgsConstructor sich um die Deklaration kümmern und lasse Guice sich darum kümmern, sie ordnungsgemäß aufzurufen.