2013-08-26 9 views
8

Ich bin immer noch neu bei Guice und habe noch keine DI-Frameworks verwendet. Nachdem ich das offizielle Wiki und viele andere Dokumente gelesen habe, kann ich mich immer noch nicht vollständig darum kümmern.Guice - Inject-Abhängigkeit in eine Klasse mit statischen Hilfsmethoden

In meinem speziellen Fall möchte ich eine EL Taglib-Funktion schreiben, die eine andere (zu injizierende) Klasse verwendet. Da alle Taglib-Funktionen als statisch deklariert werden müssen, kann ich nicht einfach @ meine Abhängigkeit über Konstruktor oder Setter einlesen. Ich dachte an die Methode requestStaticInjection(), die in http://code.google.com/p/google-guice/wiki/Injections#Static_Injections beschrieben ist, aber ich konnte es nicht zum Laufen bringen und konnte kein gutes Tutorial finden.

Vielen Dank im Voraus für jede Hilfe,

Arman

+2

"Ich kann es nicht zur Arbeit bringen" Also, was hast du probiert? –

Antwort

16

Es ist nicht sehr viel klarer als die Guice Dokumentation nicht bekommen, aber hier ist ein Unit-Test, das ein Beispiel zeigt, wie Sie statische Injektion verwenden können:

+0

Vielen Dank für Ihre Antwort. Ich werde es dir versuchen. Aber wird dies die Abhängigkeit von anderen Injectors berücksichtigen? Zum Beispiel wird Guice dieselbe Instanz verwenden, wenn die injizierte Klasse als @Singleton markiert wurde? – Arman

+0

Ich bin nicht sicher, was Sie mit "anderen Injektoren" meinen. Wenn Sie "Injected" als "@ Singleton" binden, wird diese einzelne Instanz während der Injektion (einschließlich der statischen Injektion) für das gesamte Modul verwendet. – condit

+0

Gemäß der Guice-Dokumentation erstellen Sie normalerweise einen Injektor innerhalb eines Webprojekts innerhalb eines ServletContextListener, der GuiceServletContextListener erweitert. Wenn ich also einen zusätzlichen Injektor innerhalb einer Klasse erstelle, injiziert Guice dieselbe @ Singleton-Klasse, wie sie der "ServletContextListener-Injector" hätte? – Arman

Verwandte Themen