具有定义相同类的多个模块的注入器。如何选择用于注射的模块?

时间:2012-07-03 00:53:37

标签: java dependency-injection guice

好的,所以情况并不像标题那么简单。这是交易。

我有一个ComplexClass类,它需要注入几个参数。参数“A”在模块A中定义,参数“B”在模块B中定义。另一方面,参数“C”在模块C1和模块C2中定义。

我有一个使用上述所有四个模块创建的注射器。对不起,但它必须是一个注射器。

现在,我想创建两个不同的ComplexClass实例 - 第三个参数来自模块C1,第二个参数来自模块C2。

谢谢!

1 个答案:

答案 0 :(得分:0)

这个问题通常被称为“机器人腿问题”。

请参阅: http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec

在这里看到Jesse Wilson的答案: How do I bind Different Interfaces using Google Guice?

根据PrivateModule的解决方案,您只需在PrivateModule内部安装C1和C2的模块,每个模块都使用不同的绑定注释绑定ComplexClass

还有其他可能的解决方案,例如使用辅助注入来注入可能来自两个地方之一的依赖关系。