我想要一些关于为具有下述结构的系统构建依赖注入的最佳方法的建议和反馈。我正在使用 Guice,因此更喜欢以基于注释的声明为中心的解决方案,而不是重 XML 的 Spring 样式配置。
考虑一组相似的对象,Ball, Box, and Tube
每个都依赖于一个Logger
,通过构造函数提供。(这可能并不重要,但所有四个类都恰好是单例 --- 应用程序,而不是四人组,品种。)
一个ToyChest
类负责创建和管理三个形状对象。 除了创建形状对象之外,ToyChest
它本身不依赖于。Logger
该类ToyChest
被实例化为类中的应用程序单例Main
。
我对构建形状的最佳方法感到困惑ToyChest
。我要么 (1) 需要访问已附加到实现绑定的 GuiceInjector
实例,要么 (2) 需要创建一个附加到 right的新实例。Module
Logger
Injector
Module
(1) 是通过向 中添加一个@Inject Injector injector
字段来完成的ToyChest
,但这感觉很奇怪,因为ToyChest
实际上并没有任何直接依赖关系——只有它实例化的孩子的依赖关系。
对于 (2),我不确定如何传入适当的Module
.
我在正确的轨道上吗?有没有更好的方法来构建它?
这个问题的答案提到传递 aProvider
而不是直接使用 Injector ,但我不确定它应该如何工作。
编辑:
也许一个更简单的问题是:在使用 Guice 时,构造形状对象的合适位置在哪里? ToyChest
将对它们进行一些配置,但我想它们可以在其他地方构建。 ToyChest
(作为管理它们的容器),而不是Main
,在我看来只是构建它们的合适位置。