Eclipse 4 DI的最佳实践

时间:2013-08-07 15:23:26

标签: eclipse dependency-injection rcp e4

我想知道Eclipse 4依赖注入的最佳实践是什么。 在互联网上阅读了这个主题之后,我提出了以下策略。

要求

共享应用程序的数据模型(例如公司,员工,客户......),以便框架对象(查看部件,处理程序,侦听器......)可以使用尽可能少的耦合访问它。

提出了策略

  • 我使用了lifeCycleURI插件属性来注册在应用程序启动时触发的处理程序。这样的处理程序创建一个“空”顶级数据模型容器对象并将其放入EclipseContext。当应用程序停止时它也会被丢弃。

  • 所有Eclipse框架类(视图部件,处理程序)都使用经典DI来注入此类数据模型对象。

  • 使用类构造函数创建的按钮侦听器不能在其中注入数据模型对象。所以我认为可以使用ContextInjectionFactory.make()创建它们以执行注入。这会将创建监听器的类与CIF结合起来,但最大的好处是注入工作开箱即用。

这是我发现的最佳解决方案,即利用尽可能少的耦合来利用E4 DI。在我看来,弱点是与CIF的耦合。我的问题是,是否存在任何策略来消除这种耦合,或者是针对相同要求的替代解决方案。

1 个答案:

答案 0 :(得分:1)

您可以在项目中创建服务类,例如ModelService

将@creatable和@singleton注释添加到该类:

@creatable
@singleton
class ModelService{

}

让DI在您的部件/处理程序/等中使用以下语法完成其工作。

@Inject ModelService modelService;

然后,您可以在服务中实现方法,如'createBaseModel()',updateModel()等。

这会创建一个低耦合解决方案:您还可以在单​​独的插件中实现ModelService并将其定义为OSGi服务。 对于该解决方案,您可以阅读this Lars Vogel article