Eclipse RCP - 注入标有@Singleton 的接口

Eclipse RCP - Injecting interfaces marked with @Singleton

我有以下代码:

public interface DummyInterface {
}

@Singleton
@Creatable
public class DummyInterfaceImpl1 implements DummyInterface {
}

当我需要时,我可以简单地注入它,它工作得很好,(见下文):

@Inject
DummyInterfaceImpl1

可是我做不到

@Inject
DummyInterface

因为我得到了

Unable to process "ClassWhereIInject.dummyInterface": no actual value was found for the argument "DummyInterface".

所以,我试图理解,如果我使用@Creatable 和@Singleon 的组合,而不添加我想在 IEclipseContext 中注入的实例,那么我只能注入实现 类 和不是接口?

我知道这会带来什么问题,尤其是当一个接口有多个实现时 类,并且依赖项注入框架不知道要注入哪个...也就是说,如果您不'不使用@Named 注释来指定...

注入系统只查找具有您指定名称的内容。它不会尝试找到恰好实现该接口的 class。所以不,你不能使用与接口不同名称的@Creatable class。

另一种方法是使用 'ContextFunction'。这是一个在注入系统寻找名称时调用的函数。上下文函数可以创建一个合适的实例并将其放入注入器的上下文中。有关上下文函数的完整详细信息 here