目前,我正在尝试将Eclipse3.x代码迁移到e4,并希望访问e4依赖项注入(DI)特性。我没有像这里所描述的那样进行完整的迁移。我只是在e4之上导入3.x源代码来访问业务逻辑的DI特性(而不是UI)。
我注意到,如果我遵循这种方法,DI就无法工作。有什么方法可以在Eclipse 3.x源代码中获取DI (从露娜身上导入)?
发布于 2015-09-22 11:10:10
如果一个对象是使用new xxxx创建的,那么它不会被注入。
Eclipse根据Application.e4xmi中的描述(和片段)创建的对象将自动注入(因此处理程序、部件、.)。由注射器创建的@Creatable对象也被注入。
您可以使用ContextInjectionFactory注入其他对象,这要求您可以访问IEclipseContext。
MyClass myClass = ContextInjectionFactory.make(MyClass.class, eclipseContext);使用注入创建类的新实例。
MyClass myClass = new MyClass();
ContextInjectionFactory.inject(myClass, eclipseContex);在使用new创建对象之后注入该对象。在这种情况下,类构造器不能使用注入。
注意:一个树结构中有多个Eclipse上下文。部件有自己的上下文,因此如果使用该上下文创建对象,则该对象将仅在该部件(以及与该部件相关的任何处理程序等)中可用。
要使对象在任何地方都可用,可以使用MApplication中的Eclipse (调用getContext()方法)。
https://stackoverflow.com/questions/32714709
复制相似问题