读完这篇文章后,我尝试了 Google Guice:http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/
但是有一点我不明白:当你使用 Guice 的 @Singleton 注解时,注入(inject)会注入(inject)同一个实例,但只针对一个 Injector。
如果我在其他地方创建其他注入(inject)器,则 @Singletion 不起作用(如文档中所述)。
因此,我必须在代码中的任何位置传递注入(inject)器实例,或者使其在单例中可用。
这正是我想避免的。
我们如何管理injectorS以使其每次都可以返回相同的实例?
谢谢。
最佳答案
使用 Guice 的代码通常不需要访问注入(inject)器本身:对象将接收它们的依赖项或 Provider<T>
对于他们的依赖关系,如果他们需要构建多个。
通常,对象仅在具有依赖项但本身不是由注入(inject)器创建的情况下才需要注入(inject)器(因此它们无法注入(inject)依赖项)。如果您在任何地方都使用 Guice,您可能只需要在应用程序启动时执行此操作。如果您仅将 Guice 用于项目的一部分,则注入(inject)器将成为单个单例,代理您现在通过它访问的所有其他单例。
请注意,类被注释为 @Singleton
仍然是单例对象,尽管没有一些与非注入(inject)单例相关的包袱。您仍然应该尽量避免过度依赖他们。
关于java - 注入(inject)器的 Guice 和 'injection',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610957/