好的,所以情况并不像标题那么简单。这是交易。
我有一个ComplexClass类,它需要注入几个参数。参数“A”在模块A中定义,参数“B”在模块B中定义。另一方面,参数“C”在模块C1和模块C2中定义。
我有一个使用上述所有四个模块创建的注射器。对不起,但它必须是一个注射器。
现在,我想创建两个不同的ComplexClass实例 - 第三个参数来自模块C1,第二个参数来自模块C2。
谢谢!
答案 0 :(得分:0)
这个问题通常被称为“机器人腿问题”。
在这里看到Jesse Wilson的答案: How do I bind Different Interfaces using Google Guice?
根据PrivateModule
的解决方案,您只需在PrivateModule
内部安装C1和C2的模块,每个模块都使用不同的绑定注释绑定ComplexClass
。
还有其他可能的解决方案,例如使用辅助注入来注入可能来自两个地方之一的依赖关系。