Java Eclipse RCP-注入带有@Singleton标记的接口
我有以下代码:Java Eclipse RCP-注入带有@Singleton标记的接口,java,dependency-injection,eclipse-rcp,Java,Dependency Injection,Eclipse Rcp,我有以下代码: public interface DummyInterface { } 及 当我需要时,我可以简单地注入这个,它工作得很好(见下文): 但是我做不到 @Inject DummyInterface 因为我有一个 无法处理“ClassWhereIInject.dummyInterface”:找不到参数“dummyInterface”的实际值 因此,我试图理解,如果我使用@createable和@Singleon的组合,而不在IEclipseContext中添加我想要注入的实例,那
public interface DummyInterface {
}
及
当我需要时,我可以简单地注入这个,它工作得很好(见下文):
但是我做不到
@Inject
DummyInterface
因为我有一个
无法处理“ClassWhereIInject.dummyInterface”:找不到参数“dummyInterface”的实际值
因此,我试图理解,如果我使用@createable和@Singleon的组合,而不在IEclipseContext中添加我想要注入的实例,那么我只能注入实现类而不能注入接口
我可以看出这是如何产生问题的,特别是当一个接口有多个实现类,并且依赖项注入框架不知道要注入哪个…也就是说,如果不使用@Named注释来指定 注射系统仅查找具有您指定名称的物品。它不会试图找到碰巧实现该接口的类。因此,不可以使用与接口名称不同的@createable类 另一种方法是使用“ContextFunction”。这是一个在注入系统查找名称时调用的函数。上下文函数可以创建合适的实例,并将其放入注入器的上下文中。有关上下文函数的详细信息如下
@Inject
DummyInterfaceImpl1
@Inject
DummyInterface