2

假设我有一个 ClassWithManyDependencies。我想为这个类编写一个 Guice Provider,以便在我的程序中多次创建该类的新实例(另一个类将依赖于这个 Provider 并在多个点使用它来创建新实例)。

实现这一点的一种方法是让 Provider 依赖于 ClassWithManyDependencies 的所有依赖项。这是相当丑陋的。

有没有更好的方法来实现这一目标?

注意 - 我当然不希望提供者依赖注入器。我考虑的另一个选择是让 ClassWithManyDependencies 和 ClassWithManyDependenciesProvider 扩展同一个基类,但它很丑。

4

2 回答 2

9

正如邮件列表中提到的,任何可以注入的地方都ClassWithManyDependencies可以简单地注入Provider<ClassWithManyDependencies>,不需要自己写任何特别的东西。Guice 为您做到这一点。

于 2010-04-15T16:37:47.800 回答
-1

除了与其他框架集成外,您不必编写提供程序。

只是不要在 SINGLETON 范围内和想要构建许多实例的类中绑定 ClassWithManyDependencies,而不是注入 ClassWithManyDependencies 实例,而是注入 Provider。(Guice 可以免费为每个绑定的课程做这件事)

在此提供程序上,您只需调用 get(),如果不在 SINGLETON 范围内,它每次都会创建一个新实例。

现在,如果您处于 ClassWithManyDependencies 依赖于一些 GUICE IOC 和一些构造函数参数的棘手情况,那么您应该使用辅助注入

于 2010-04-15T16:39:25.577 回答