假设我有一个Guice模块ProdModule,我想依赖其他GuiceModule,ProdDbModule和ProdPubSubModule.我如何实现ProdModule的configure()?
Jer*_*emy 44
您将安装其他模块
protected void configure(){
install(new ProdDbModule());
install(new ProdPubSubModule());
// etc.
}
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 23
虽然使用起来很方便install,但install只要在创建时提供所有必需的模块,您甚至不需要其他模块Injector:
Injector injector = Guice.createInjector(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
Run Code Online (Sandbox Code Playgroud)
这可以让您更灵活地更改入口点类中的其中一个模块,而无需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);
Run Code Online (Sandbox Code Playgroud)