2

阅读这篇文章后,我尝试了 Google Guice:http: //tech.puredanger.com/2007/07/03/pattern-hate-singleton/

但是有一点我不明白:当您使用 Guice 的 @Singleton 注释时,注入会注入相同的实例,但只针对一个注入器。

如果我在其他地方创建另一个注入器,@Singletion 不起作用(如文档中所述)。

所以我将不得不在我的代码中的任何地方传递注入器实例,或者使其在单例中可用。

这正是我想避免的。

我们如何管理 injectorS 以使其每次都返回相同的实例?

谢谢。

4

1 回答 1

3

使用 Guice 的代码通常不需要访问注入器本身:Provider<T>如果对象需要构造多个,它们将接收它们的依赖关系或它们的依赖关系。

通常,对象仅在具有依赖项但本身不是由注入器创建的情况下才需要注入器(因此它们不能注入其依赖项)。如果您在任何地方都使用 Guice,您可能只需要在应用程序启动时执行此操作。如果您只在项目的一部分中使用 Guice,则注入器将成为一个单例,代理您现在通过它访问的所有其他单例。

请注意,带注释的类@Singleton仍然是单例对象,尽管没有与非注入单例相关的一些包袱。你仍然应该尽量避免过度依赖它们。

于 2012-07-23T10:54:17.507 回答