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