Ответ 1
Вы бы install ваши другие модули
protected void configure(){
install(new ProdDbModule());
install(new ProdPubSubModule());
// etc.
}
Скажем, у меня есть модуль Guice ProdModule, который я хотел бы зависеть от других GuiceModules, ProdDbModule и ProdPubSubModule. Как я могу реализовать ProdModule configure()?
Вы бы install ваши другие модули
protected void configure(){
install(new ProdDbModule());
install(new ProdPubSubModule());
// etc.
}
В то время как удобно использовать install
, вам даже не нужно install
других модулей, если вы создадите все необходимые модули при создании Injector
:
Injector injector = Guice.createInjector(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
Это может дать вам большую гибкость, чтобы изменить только один из этих модулей в классе точки входа, не требуя изменения ProdModule
. Вы также можете указать в модуле, какие привязки ему нужны, чтобы другие модули предоставляли с помощью методов requireBinding
.
Вы можете использовать Modules.combine
для создания нового модуля, который содержит все остальные модули. (См. эта ссылка)
Различия:
install()
Module
, а не инжектор, что означает, что вы можете легко добавить к инжектору разные модули.import com.google.inject.util.Modules;
Module module = Modules.combine(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
Injector injector = Guice.createInjector(module);