我想要一些关于使用辅助注射的建议。
我看到的大多数关于辅助注射的例子都有以下特点:
作为构造函数的类有一个参数,一个或多个仅在运行时出现的参数,即在构造时无法确定的参数,以及一个或多个在构造时已知的参数。因此,工厂的 create 方法只接受运行时提供的参数。
在我的情况下,90% 的时间,我只有运行时参数。意思是,我有一个需要 B 类的 A 类,但 B 采用只有 A 可以提供的参数。所以B的构造函数中只有@assister参数。
我想知道这是否是辅助注射的正确用法。
我的最后一个例子如下。A 需要返回一个作为 dataStructure 的类 B(有时称为 DTO 或值对象),因此我将必要的工厂传递给 A,以便在计算之后他可以返回 B。这里 B 就像一个容器类。我很少有这样的情况
..
另一种情况是服务 A 需要 B 服务,但 B 服务在创建时依赖于来自 A 的参数。然而,他自己将来自 A 的参数注入到 A 的地方,A 在用它创建 B 之前对其进行了一些初始化
.
特别是在最后一种情况下,我的目标是在 A 之外进行“A 的内部初始化”。
想法是在每个包中都有特定的创建模块,将那个包的“内部服务创建”外部化吗?
我这么说是因为我一直认为,在与将要使用的类/服务无关的地方创建东西对我来说听起来很奇怪。我并不是说我不坚持将用法与构造分开,而是我宁愿在类似的封闭类中这样做。不在一个完全不相关的地方。
根据我目前的理解,每个包都应该提供它的创建模块,该模块集中创建它包含的对象,尤其是在使用私有构造函数的情况下。
到目前为止,我已经使用 Guice 有一段时间了,但直到最近我才开始关注分离模块,并将模块与他们的包一起保存。我曾经在模块之间进行继承以链接对象的创建,并最终拥有一个从一开始就创建所有内容的模块。那是错的吧?
就是这样。我将不胜感激有关使用 Guice 的正确方法的一般性建议。我不确定我是否以正确的方式使用辅助注射。