如何编写未明确创建对象的Guice Provider?

时间:2010-04-15 16:28:02

标签: java dependency-injection guice

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

实现此目的的一种方法是让Provider依赖于ClassWithManyDependencies的所有依赖项。这很难看。

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

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

2 个答案:

答案 0 :(得分:9)

正如邮件列表中所提到的,只要注入ClassWithManyDependencies,您就可以简单地注入Provider<ClassWithManyDependencies>,而不需要自己编写任何特殊内容。 Guice为你做这件事。

答案 1 :(得分:-1)

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

只是不要在范围SINGLETON和想要构建许多实例的类中绑定ClassWithManyDependencies,而不是注入ClassWithManyDependencies实例,而是注入了Provider。 (Guice可以为每个绑定类免费提供)

在这个提供者上你可以调用get(),如果不在范围SINGLETON中,它每次都会创建一个全新的实例。

现在,如果您遇到一些棘手的情况,ClassWithManyDependencies依赖于某些GUICE IOC和一些构造函数参数,那么您应该选择Assisted Injections