我在阅读本文后试用了Google Guice:http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/
但有些事情我不明白:当你使用Guice的@Singleton anotation时,注入会注入相同的实例,但仅适用于一个Injector。
如果我在其他地方创建了另一个Injector,则@Singletion不起作用(如文档中所述)。
所以我必须在代码中的任何地方传递注入器实例,或者以单例形式提供它。
这正是我想避免的。
如何管理injectorS以使每次都能返回相同的实例?
感谢。
答案 0 :(得分:3)
使用Guice的代码通常不需要访问注入器本身:如果需要构造多个对象,对象将接收它们的依赖项或Provider<T>
它们的依赖项。
通常,对象只需要注入器,如果它们具有依赖关系,但它们本身不是由注入器创建的(因此它们不能注入它们的依赖关系)。如果您在任何地方使用Guice,您可能只需要在应用程序启动时执行此操作。如果您仅将Guice用于项目的一部分,则注入器将成为单个单例,代理您现在通过它访问的所有其他单例。
请注意,注释@Singleton
的类仍然是单例对象,尽管没有与非注入单例相关的一些行李。你应该尽量避免过多依赖它们。