我想知道 Eclipse 4 依赖注入的最佳实践是什么。 在网上阅读了有关该主题的内容后,我提出了以下策略。
要求
共享应用程序的数据模型(例如公司、员工、客户等),以便框架对象(视图部件、处理程序、侦听器等)可以以尽可能少的耦合来访问它。
建议策略
我使用 lifeCycleURI 插件属性来注册在应用程序启动时触发的处理程序。此类处理程序创建一个“空”顶级数据模型容器对象并将其放入 EclipseContext 中。当应用程序停止时它也会被丢弃。
所有 Eclipse 框架类(视图部件、处理程序)都使用经典 DI 来注入此类数据模型对象。
这是我发现的以尽可能少的耦合利用 E4 DI 的最佳解决方案。我认为弱点在于与 CIF 的耦合。我的问题是是否存在任何策略来消除这种耦合,或者针对相同要求的替代解决方案。
您可以在项目中创建一个服务类,比如说
ModelService
。
向该类添加 @Creatable 和 @Singleton 注释:
@Creatable
@Singleton
class ModelService{
}
并让 DI 在您的零件/处理程序/等中使用以下语法来完成其工作..
@Inject ModelService modelService;
然后您可以在服务中实现“createBaseModel()”、updateModel() 等方法。
这创建了一个低耦合解决方案:您还可以在单独的插件中实现 ModelService 并将其定义为 OSGi 服务。 对于该解决方案,您可以阅读这篇 Lars Vogel 文章。