Убедитесь, что модуль загружен только один раз

Имея дело с Guice, мне интересно, как я должен обрабатывать зависимости с точки зрения модулей.

В Guice каждый модуль представлен экземпляром. Поэтому, если у меня есть модуль, требующий определенного сервиса, он создает модуль, добавляющий привязку к этому сервису, и устанавливает его (binder.install (module)).

Теперь у меня есть два независимых модуля, которые имеют смысл использовать независимо, и оба устанавливают один и тот же модуль базы данных.

При самостоятельном использовании обоих модулей никаких проблем не возникает, но что произойдет, если оба модуля используются в одном приложении? Модуль базы данных будет загружен обоими модулями независимо, и это не может быть правильно.

Есть ли способ спросить связыватель, если определенный тип уже имеет привязку? Я не могу использовать getProvider для проверки этого, так как все, что возвращается, это LookupProvider независимо от того, что-то уже привязано или нет.

Так как же бороться с этим сценарием?

Обновить:

Это швы Guice не может обеспечить следующую функцию:

Проверьте, был ли данный модуль уже загружен.Проверьте, был ли данный класс уже связан.Используйте провайдеров в конфигурации, чтобы иметь возможность выполнять распределенную настройку (модули могут настраивать объекты, которые будут добавлены).

Ответы на вопрос(3)

Ваш ответ на вопрос