Убедитесь, что модуль загружен только один раз
Имея дело с Guice, мне интересно, как я должен обрабатывать зависимости с точки зрения модулей.
В Guice каждый модуль представлен экземпляром. Поэтому, если у меня есть модуль, требующий определенного сервиса, он создает модуль, добавляющий привязку к этому сервису, и устанавливает его (binder.install (module)).
Теперь у меня есть два независимых модуля, которые имеют смысл использовать независимо, и оба устанавливают один и тот же модуль базы данных.
При самостоятельном использовании обоих модулей никаких проблем не возникает, но что произойдет, если оба модуля используются в одном приложении? Модуль базы данных будет загружен обоими модулями независимо, и это не может быть правильно.
Есть ли способ спросить связыватель, если определенный тип уже имеет привязку? Я не могу использовать getProvider для проверки этого, так как все, что возвращается, это LookupProvider независимо от того, что-то уже привязано или нет.
Так как же бороться с этим сценарием?
Обновить:
Это швы Guice не может обеспечить следующую функцию:
Проверьте, был ли данный модуль уже загружен.Проверьте, был ли данный класс уже связан.Используйте провайдеров в конфигурации, чтобы иметь возможность выполнять распределенную настройку (модули могут настраивать объекты, которые будут добавлены).