假设我有Module
这样的结构:
Root
|--SubModuleA
|-BaseModule
|--SubModuleB
|-BaseModule
SubModuleA
和SubModuleB
旨在单独使用,但也适用于此示例中的一个应用程序。两者都安装相同的BaseModule
。
Guice允许多次声明相同的绑定,如果它们完全相同的话。在another SO-thread中,这被称为“绑定重复数据删除”。
这适用于简单绑定,但在FactoryModuleBuilder
中使用BaseModule
会导致CreationException
抱怨
"A binding to ... was already configured at [...]FactoryModuleBuilder$1.configure()"
我检查过,绑定确实只在一个Module
中声明。并将绑定结果删除为错误,指出绑定已丢失。所以我假设使用FactoryModuleBuilder
不可能多次声明相同的绑定。那是true
吗?有办法解决这个问题吗?
答案 0 :(得分:0)
是的,您可以通过改为来解决这个问题
Root
|--BaseModule
|--SubModuleA
|--SubModuleB
所有模块一起定义注入器的已注册绑定。只有在特殊情况下,除了可读性之外,实际上是否需要在模块内部安装另一个模块。