Stellen Sie sicher, dass das Modul nur einmal in Guice geladen ist

Da ich mich mit Guice befassen muss, frage ich mich, wie ich mit Abhängigkeiten in Bezug auf Module umgehen soll.

In Guice wird jedes Modul von einer Instanz bereitgestellt. Wenn also ein Modul einen bestimmten Dienst benötigt, erstellt es das Modul, fügt eine Bindung zu diesem Dienst hinzu und installiert es (binder.install (module)).

Jetzt habe ich zwei unabhängige Module, die völlig sinnvoll sind, um unabhängig voneinander verwendet zu werden, und beide installieren dasselbe Datenbankmodul.

Wenn beide Module unabhängig voneinander verwendet werden, tritt kein Problem auf. Was passiert jedoch, wenn beide Module in derselben Anwendung verwendet werden? Das Datenbankmodul wird von beiden Modulen unabhängig voneinander geladen und das kann nicht korrekt sein.

Gibt es eine Möglichkeit, den Binder zu fragen, ob ein bestimmter Typ bereits eine Bindung hat? Ich kann getProvider nicht verwenden, um dies zu überprüfen, da alles, was zurückgegeben wird, ein LookupProvider ist, unabhängig davon, ob etwas bereits gebunden ist oder nicht.

Wie muss man mit diesem Szenario umgehen?

Aktualisieren:

Es scheint, dass Guice die folgende Funktion nicht bereitstellen kann:

Überprüfen Sie, ob ein bestimmtes Modul bereits geladen wurde.Überprüfen Sie, ob eine bestimmte Klasse bereits gebunden war.Verwenden Sie Provider in der Konfiguration, um eine verteilte Konfiguration durchzuführen (Module, die Objekte konfigurieren können, die beigetragen werden).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage