我有一个将在应用程序中的多个UI模块中使用的UI组件。如何让Guice将带注释的注入绑定到单个实例
我想注释在一个UI模块中注入到其他几个类的UI组件是单例,而不是整个应用程序中的单例。为了使每个UI模块使用UI组件,使用了一个且仅有一个UI组件实例。
我从Guice文档找不到这个直接的解决方案。所以我想也许我可以使用注释区分这些实例? 在模块A中说,我用Named("ModuleA")
注释了UI组件的所有注入;并在模块B中使用Named("ModulaB")
。而在配置上,我试图用这样的:
this.bind(UIComponentA.class)
.annotatedWith(Names.named("ModulaA"))
.to(UIComponentAImpl.class).in(Singleton.class);
this.bind(UIComponentA.class)
.annotatedWith(Names.named("ModulaB"))
.to(UIComponentAImpl.class).in(Singleton.class);
因为UICompoenetAImpl还需要注入,所以我不能简单地创建实例那里。完全不知道这是否有效。
我想知道完成此操作的标准方法是什么?
感谢您的答案,但正如我所说的UICompoenentAImpl也有依赖性,需要由Guice注入。 – Wudong 2012-03-06 12:11:15
如果你手动创建UICompoenentAImpl并通过bind(...)。toInstance()把它添加到guice容器中,你是否检查过这些依赖项没有被注入?什么样的依赖关系? – 2012-03-06 13:13:59
不幸的是它有几个依赖关系,也需要由Guice注入。手动创建实例将非常麻烦。 – Wudong 2012-03-06 14:07:26