3 Stimmen

Projekte mit durchsuchbarem Quellcode unter Verwendung von Dependency Injection mit Guice?

Ich lese oft über Dependency Injection und ich habe auf Google recherchiert und ich verstehe in der Theorie, was es tun kann und wie es funktioniert, aber ich würde gerne eine tatsächliche Codebasis sehen, die es verwendet (Java/Guice wäre bevorzugt).

Kann mir jemand einen Hinweis auf ein Open-Source-Projekt geben, bei dem ich sehen kann, wie es wirklich verwendet wird? Ich denke, wenn ich mir den Code ansehe und den gesamten Aufbau sehe, erfahre ich mehr als die üblichen Schnipsel in den Einführungsartikeln, die man im Internet findet. Vielen Dank im Voraus!

6voto

Jesse Wilson Punkte 36213

El Wave-Protokoll-Server ist meine bevorzugte Beispielanwendung.

3voto

Mark Renouf Punkte 30149

Genau mit diesem Problem hatte ich ein wenig zu kämpfen. Es ist so abstrakt und einfach, dass ich mir immer Sorgen gemacht habe, ich würde es "falsch" machen.

Ich habe es im Hauptprojekt verwendet, das Abhängigkeiten zu anderen Projekten hat, weil das Guice-Modul, das die Bindungen setzt, Teil des Hauptprojekts war.

Mir wurde schließlich klar, dass die Bibliotheken die Module selbst bereitstellen sollten. An diesem Punkt können Sie nur auf eine Instanz eines Moduls (nicht ein bestimmtes), und die Schnittstellen, die durch sie gebunden sind abhängen.

Um noch einen Schritt weiter zu gehen, können Sie die neue ServiceLoader Mechanismus in Java 6, um automatisch alle auf dem Klassenpfad verfügbaren Guice-Module zu finden und zu installieren. Dann können Sie die Abhängigkeiten austauschen, indem Sie einfach den Klassenpfad ändern (db-real.jar vs. db-mock.jar).

1voto

Matt Hinze Punkte 13498

Ich verstehe, dass Sie in Java-Land sind, aber in der .NET-Welt gibt es mehrere Open-Source-Anwendungen, die mit einer Umkehrung der Kontrolle Container geschrieben. Schauen Sie sich CodeCampServer in dem das UI-Modul keinen Verweis auf das Modul zur Auflösung von Abhängigkeiten hat. Es gibt ein HttpModule, das die Arbeit erledigt. (ein HttpModule ist nur eine externe Bibliothek, die Sie einstecken können, die Ereignisse in ASP.NET behandelt, in CodeCampServer lädt das UI-Projekt dieses DependencyRegistrarModule zur Laufzeit, ohne Kompilierzeitverweis darauf).

0 Stimmen

Danke, ich werde mir das ansehen, auch wenn es nicht Java ist, so ist es doch etwas, das man sich ansehen kann.

-1voto

Simon Groenewolt Punkte 10497

Ich denke, dass Dependency Injection einen Weg hat, aus dem Blickfeld zu verschwinden, wenn es richtig verwendet wird, wird es nur ein Weg der Initialisierung/Verdrahtung Ihrer Anwendung sein - wenn es mehr als das aussieht, schauen Sie wahrscheinlich auf zusätzliche Funktionen des Frameworks zur Hand, und nicht auf die nackten Knochen der Dependency Injection.

Edit: Ich würde empfehlen, tatsächlich beginnen, es zu verwenden, anstatt zu versuchen, Beispiele zu finden, und dann kommen Sie zurück und posten Fragen hier, wenn Sie nicht bekommen können, Sachen zu arbeiten, wie Sie denken, es sollte :-)

0 Stimmen

Dies ist nur eine Ausrede, um keine guten Proben herauszubringen. Ernsthaft, bei der Größe der Java-Gemeinschaft gibt es niemanden, der dieses Zeug im Open-Source-Bereich lehrt?

0 Stimmen

Für einen wirklichen "Unterricht" würde ich empfehlen, ein Buch zu kaufen (ich habe es getan, um etwas über den Frühling zu lernen). Mein Punkt war lediglich, dass die Injektion von Abhängigkeiten keine so große Idee ist, dass sie wirklich durch eine spezielle Anwendung demonstriert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X