假设我有一个Guice模块ProdModule,我想依赖其他GuiceModule,ProdDbModule和ProdPubSubModule。我如何实现ProdModule的configure()?
答案 0 :(得分:39)
你会install你的其他模块
protected void configure(){
install(new ProdDbModule());
install(new ProdPubSubModule());
// etc.
}
答案 1 :(得分:22)
虽然使用install
可以很方便,但只要在创建install
时提供所有必要的模块,您甚至不需要Injector
其他模块:
Injector injector = Guice.createInjector(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
这可以让您更灵活地在入口点类中更改其中一个模块,而无需修改ProdModule
本身。您还可以在模块中指明使用requireBinding
方法要求其他模块提供的绑定。
答案 2 :(得分:5)
您可以使用Modules.combine
创建包含所有其他模块的新模块。 (见this link)
差异:
install()
Module
而不是一个注射器,这意味着您可以轻松地向注射器添加不同的模块。import com.google.inject.util.Modules;
Module module = Modules.combine(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
Injector injector = Guice.createInjector(module);