假设我有一个ClassWithManyDependencies。我想为这个类编写一个Guice Provider,以便在我的程序中多次创建一个类的新实例(另一个类将依赖于这个Provider并在几个点使用它来创建新的实例)。
实现此目的的一种方法是让Provider依赖于ClassWithManyDependencies的所有依赖项。这很难看。
有没有更好的方法来实现这一目标?
注意 - 我当然不希望Provider依赖注入器。我考虑的另一个选择是让ClassWithManyDependencies和ClassWithManyDependenciesProvider扩展相同的基类,但它很难看。
答案 0 :(得分:9)
正如邮件列表中所提到的,只要注入ClassWithManyDependencies
,您就可以简单地注入Provider<ClassWithManyDependencies>
,而不需要自己编写任何特殊内容。 Guice为你做这件事。
答案 1 :(得分:-1)
除了与其他框架集成之外,您不必编写提供程序。
只是不要在范围SINGLETON和想要构建许多实例的类中绑定ClassWithManyDependencies,而不是注入ClassWithManyDependencies实例,而是注入了Provider。 (Guice可以为每个绑定类免费提供)
在这个提供者上你可以调用get(),如果不在范围SINGLETON中,它每次都会创建一个全新的实例。
现在,如果您遇到一些棘手的情况,ClassWithManyDependencies依赖于某些GUICE IOC和一些构造函数参数,那么您应该选择Assisted Injections