Nachdem mit Guice zu tun, frage ich mich, wie ich Abhängigkeiten in Bezug auf die Module behandeln soll.Stellen Sie sicher, Module In Guice nur einmal geladen wird
In Guice wird jedes Modul durch eine Instanz bereitgestellt. Wenn ich also ein Modul benötige, das einen bestimmten Dienst benötigt, erstellt es das Modul, fügt dem Dienst eine Bindung hinzu und installiert es (binder.install (Modul)).
Jetzt habe ich zwei unabhängige Module, die völlig unabhängig voneinander sinnvoll sind und beide das gleiche Datenbankmodul installieren.
Mit beiden Modulen unabhängig voneinander kein Problem auftreten, aber was passiert, wenn beide Module in der gleichen Anwendung verwendet werden? Das Datenbankmodul wird von beiden Modulen unabhängig geladen und das kann nicht korrekt sein.
Gibt es eine Möglichkeit, den Ordner zu fragen, ob ein bestimmter Typ bereits eine Bindung hat? Ich kann getProvider nicht verwenden, um das zu überprüfen, da alles, was zurückgegeben wird, ein LookupProvider ist, egal ob etwas bereits bind ist oder nicht.
Wie muss man sich mit diesem Szenario umgehen?
Update:
Es Nähte Guice nicht in der Lage ist, die folgende Funktion zur Verfügung zu stellen:
- prüfen, ob ein bestimmtes Modul bereits geladen wurde.
- Überprüfen Sie, ob eine bestimmte Klasse wurde bereits gebunden.
- Verwenden Provider innerhalb der Konfiguration der Lage sein, verteilte Konfiguration zu tun (Module konfigurieren zu können Objekte beigetragen werden).
So wurden hinzugefügt ich meine eigene Implementierung benötigen? Wie Module in Abhängigkeiten gruppieren und Abhängigkeiten auf eine bestimmte Art auflösen. Aus dem Code habe ich verstanden, dass die Module in der Reihenfolge von links nach rechts oder vorletzter ausgeführt werden. –
Die Reihenfolge, in der die Module installiert werden, ist unbedeutend. Deshalb gibt es keine Möglichkeit zu prüfen, ob eine Bindung "noch" erstellt wurde. –
Ja, aber der Code geht einfach die angegebene Modulliste auf diese Weise. Am Ende muss ich noch viel mehr zum Guice-Code hinzufügen, um diese wichtige Abkürzung zu überwinden. –