繁体   English   中英

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

[英]How do I write a Guice Provider that doesn't explicitly create objects?

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM