Guice绑定重复数据删除与FactoryModuleBuilder

时间:2018-02-06 18:06:48

标签: java guice

假设我有Module这样的结构:

Root
|--SubModuleA
  |-BaseModule
|--SubModuleB
  |-BaseModule

SubModuleASubModuleB旨在单独使用,但也适用于此示例中的一个应用程序。两者都安装相同的BaseModule

Guice允许多次声明相同的绑定,如果它们完全相同的话。在another SO-thread中,这被称为“绑定重复数据删除”。

这适用于简单绑定,但在FactoryModuleBuilder中使用BaseModule会导致CreationException抱怨

"A binding to ... was already configured at [...]FactoryModuleBuilder$1.configure()"

我检查过,绑定确实只在一个Module中声明。并将绑定结果删除为错误,指出绑定已丢失。所以我假设使用FactoryModuleBuilder不可能多次声明相同的绑定。那是true吗?有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以通过改为来解决这个问题

Root
|--BaseModule
|--SubModuleA
|--SubModuleB

所有模块一起定义注入器的已注册绑定。只有在特殊情况下,除了可读性之外,实际上是否需要在模块内部安装另一个模块。