Guice Modules.override 关于在多个模块中指定的绑定?
Guice Modules.override on binding specified in multiple modules?
我有两个 Guice 模块,每个模块都在同一个界面上执行 @Provides。每个独立运行就好了。
现在我有第三个模块想要引入这两个模块。我希望第 3 个模块的 @Provides 胜过其他模块,这似乎是 Modules.override 的理想选择。确实,这有效。
Modules.override(childModule1).with(parent);
parent 胜过 child 的绑定。太棒了!
然而,这失败了:(。
Modules.override(childModule1, childModule2).with(parent);
在那种情况下,它抱怨 childModule2 对 Foo 的绑定是 "already bound"。看起来覆盖仅在有一个子模块提供时才有效。有什么我遗漏的吗?
我想出了一个解决方案,尽管它似乎完全属于 hack 类别。我不得不嵌套覆盖。
Modules.override(Modules.override(childModule1).with(childModule2)).with(parent);
我有两个 Guice 模块,每个模块都在同一个界面上执行 @Provides。每个独立运行就好了。
现在我有第三个模块想要引入这两个模块。我希望第 3 个模块的 @Provides 胜过其他模块,这似乎是 Modules.override 的理想选择。确实,这有效。
Modules.override(childModule1).with(parent);
parent 胜过 child 的绑定。太棒了!
然而,这失败了:(。
Modules.override(childModule1, childModule2).with(parent);
在那种情况下,它抱怨 childModule2 对 Foo 的绑定是 "already bound"。看起来覆盖仅在有一个子模块提供时才有效。有什么我遗漏的吗?
我想出了一个解决方案,尽管它似乎完全属于 hack 类别。我不得不嵌套覆盖。
Modules.override(Modules.override(childModule1).with(childModule2)).with(parent);