我有一个对象,我想注入几个不同类型的对象。该对象必须相同:
class A {}
class B {@Inject A a;}
class C {@Inject A a;}
class D {@Inject A a;}
A实例a必须在B,C,D类型的对象之间共享。
此外,我需要能够在这些对象中切换A的实例,而不会破坏它。我甚至需要能够将A的所有实例保存在容器中。 A的每个实例都与文档相关,我的应用程序应该能够处理n个文档(不是在同一时间,但应该能够在它们之间切换)。当用户选择另一个文档时,A的相应实例应该替换B,C,D实例中的前一个。
使用JBoss Weld有一种简单的方法吗?
我有另一种解决方案的想法(使用单例管理器对文档选择做出反应,并在需要的地方替换A的实例),但我发现这个解决方案并不干净。也许我错了......
答案 0 :(得分:0)
我发现的解决方案是使用Manager而不是直接使用A,例如:
class A {}
class AManager{A currentA;}
class B {@Inject AManager manager;}
class C {@Inject AManager manager;}
class D {@Inject AManager manager;}
并在管理器中切换currentA,具体取决于上下文。