Upewnij się, że moduł jest ładowany tylko raz w Guice

Mając do czynienia z Guice, zastanawiam się, jak powinienem radzić sobie z zależnościami pod względem modułów.

W Guice każdy moduł jest dostarczany przez instancję. Jeśli więc mam moduł wymagający określonej usługi, tworzy moduł dodający powiązanie z tą usługą i instaluje ją (binder.install (moduł)).

Teraz mam dwa niezależne moduły, które mają sens do samodzielnego użycia i oba instalują ten sam moduł bazy danych.

Niezależnie od obu modułów nie ma problemu, ale co się stanie, jeśli oba moduły będą używane w tej samej aplikacji? Moduł bazy danych zostanie załadowany niezależnie przez oba moduły i nie może być poprawny.

Czy istnieje sposób, aby zapytać spoiwo, jeśli określony typ ma już wiążące? Nie mogę użyć getProvider do sprawdzenia, ponieważ wszystko, co jest zwracane, to LookupProvider, niezależnie od tego, czy coś jest już powiązane, czy nie.

Jak więc ma się zająć tym scenariuszem?

Aktualizacja:

Szwy Guice nie są w stanie zapewnić następującej funkcji:

Sprawdź, czy dany moduł był już załadowany.Sprawdź, czy dana klasa była już związana.Użyj dostawców w konfiguracji, aby móc wykonywać konfigurację rozproszoną (moduły mogą konfigurować obiekty, które są wnoszone).

questionAnswers(3)

yourAnswerToTheQuestion