【问题标题】:Eclipse RCP avoid singletonsEclipse RCP 避免单例
【发布时间】:2013-09-23 16:12:48
【问题描述】:

在 RCP 应用程序中使用某种 DI 的最简单方法是什么? 我需要注册依赖项并在应用程序的不同部分使用它们:向导、对话框、属性页等。

我所拥有的:带有大量插件的产品。

我需要什么:在开始 Eclipse RCP 产品时,我需要读取一些文件,将这些数据保存在内存中,并使其可以访问不同的 UI 元素(在不同的插件中),而无需使用单例。

在创建消费者时,我无法在构造函数中传递这些数据,因为消费者是通常由 RCP 平台创建的 UI 元素,我无法直接访问它们的创建。

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    Eclipse 4.3 支持 DI。这对于作为不使用 Eclipse 3 兼容代码(“e4”模式)的纯 Eclipse 4 应用程序创建的 RCP 最有效。在新应用模型中定义的对象是使用 DI 创建的,但也可以使用注入创建其他对象(例如对话框)。

    有关 Eclipse 4 RCP 的介绍,请参阅 http://www.vogella.com/articles/EclipseRCP/article.html

    对于一个 Eclipse 3 应用程序,一个部件可以获取注入所需的 Eclipse 上下文

    IWorkbenchPartSite site = part.getSite();
    IEclipseContext parentContext = (IEclipseContext) site.getService(IEclipseContext.class);
    

    使用org.eclipse.e4.core.contexts.ContextInjectionFactory 进行注入。

    【讨论】:

    • 太棒了。实际上,我的应用程序目前正在 Eclipse 4.3 上运行,但所有代码都是为 Eclipse 3.5 编写的。我可以在这个案例的上下文中注册我自己的组件吗?
    【解决方案2】:

    或者,如果您仍在使用 Eclipse 3 应用程序,您可以使用 Eclipse Plugin Registry 来定义扩展点和扩展。这也相当于依赖注入,没有注入:-)

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2013-01-18
      • 2021-01-05
      • 2013-01-04
      相关资源
      最近更新 更多