eclipse - Eclipse 4 DI 的最佳实践

标签 eclipse dependency-injection rcp e4

我想知道 Eclipse 4 依赖项注入(inject)的最佳实践是什么。 在网上阅读了有关该主题的内容后,我提出了以下策略。

要求

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

提议的策略

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

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

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

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

最佳答案

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

向该类添加 @creatable 和 @singleton 注释:

@creatable
@singleton
class ModelService{

}

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

@Inject ModelService modelService;

然后您可以在服务中实现“createBaseModel()”、updateModel() 等方法。

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

关于eclipse - Eclipse 4 DI 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107389/

相关文章:

asp.net-mvc - 模型需要注入(inject)依赖时的模型(ViewModel)绑定(bind)

java - 限制执行第三方软件的线程的权限

java - eclipse 。 ClassNotFoundException 但我确实知道该类存在

c - 警告 : initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]

java - 将 .class 或 .java 文件作为 Eclipse 项目中的资源是否有任何限制?

c# - autofac 中的工厂模式

c# - 最佳实践 : How to get several dependency repositories into a ActionController?

java - 带有外部第三方 jar 的 Eclipse 插件

java - 在设备上运行黑莓应用程序 'attempts to access a secure api'

eclipse - 如何在 eclipse javadocs 的注释中添加超链接