是否可以在Luna上导入的3.x基础Eclipse代码中使用依赖注入(DI)(Eclipse e4)

时间:2015-09-22 10:38:00

标签: eclipse dependency-injection eclipse-rcp e4

目前我正在尝试将Eclipse 3.x代码迁移到e4,我想访问e4依赖注入(DI)功能。我没有按照here所述进行完整的迁移。我只是在e4上导入3.x源以获取业务逻辑的DI功能(而不是UI)。

如果我遵循这种方法,我发现DI不起作用。有什么方法可以在Luna上导入的Eclipse 3.x源中实现DI吗?

1 个答案:

答案 0 :(得分:2)

如果刚刚使用new xxxx创建了一个对象,则不会注入该对象。

Eclipse从Application.e4xmi(和片段)中的描述创建的对象会自动注入(因此处理程序,部件,......)。注入器创建的@Creatable对象也会被注入。

您可以使用ContextInjectionFactory注入其他对象,这需要您有权访问IEclipseContext

MyClass myClass = ContextInjectionFactory.make(MyClass.class, eclipseContext);

创建一个带注入的类的新实例。

MyClass myClass = new MyClass();

ContextInjectionFactory.inject(myClass, eclipseContex);

使用new创建对象后对其进行注入。在这种情况下,类Constructor不能使用注入。

注意:树结构中有多个Eclipse上下文。零件有自己的上下文,因此如果使用该上下文创建对象,则对象将仅在零件中可用(以及与零件关联的任何处理程序等)。

要使对象可用,请使用MApplication中的Eclipse上下文(调用getContext()方法)。