Eclipse 4配置依赖项注入的绑定

时间:2019-04-25 13:09:04

标签: dependency-injection eclipse-plugin eclipse-rcp e4

在我公司,我们习惯于构建与命令行工具共享接口的Eclipse插件。我们正在研究将Eclipse 4 RCP API用于我们的下一个插件,但是我很难在自己的对象上使用注入。例如,我想声明必须由EclipseHelper实例化IHelper:

import alsaaudio
m = alsaaudio.Mixer('PCM')
m.setvolume(80)
vol = m.getvolume()
print(vol)

使用guice,我将在Injector中声明从IHelper到EclipseHelper的绑定,但是在Eclipse中,我仅找到摘要(如vogella一样)将IHelper绑定到EclipseHelper的具体实例。我不想这样做,构造实例可能会非常复杂。如何在应用程序级别声明绑定??

1 个答案:

答案 0 :(得分:0)

如果您在OSGi环境中使用Eclipse DI(并且由于您尝试注入IWorkbench我以为是),则可以使用ContextFunction生成实例(如果实例不可用)在IEclipseContext中。

这会将ContextFunction放入OSGi服务层:

@Component(service = IContextFunction.class, property = "service.context.key=my.domain.IHelper")
public class IHelperFactoryCF extends ContextFunction {
    @Override
    public Object compute(IEclipseContext context) {
        return ContextInjectionFactory.make(EclipseHelper.class, context);
    }
}

您还可以将ContextFunction放入DI上下文中。 有关更多信息,请参见此处:https://wiki.eclipse.org/Eclipse4/RCP/Contexts#Context_Functions