`
小嘴冰凉
  • 浏览: 455926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Eclipse RCP与Spring的整合

阅读更多
最近上一个项目想在Eclipse RCP中使用Spring,在网上Google了一下发现这方面的资料比较少,知道Spring自己有个Spring-OSGI的项目,可以在Spring中配置OSGI服务。可是,我只是想在RCP中引入Spring来管理Java Bean,不想去研究那个东西。于是,看看有没有什么简单的方法来解决这个问题。在陈刚的BlOG中找到了问题的部分答案。
      
        于是,我在RCP项目的activator class中加入了

 1     private ApplicationContext ctx;
 2 
 3     private void initializeApplicationContext() {
 4         ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
 5         try{
 6             Thread.currentThread().setContextClassLoader(getDefault().getClass().getClassLoader());
 7             this.ctx = new FileSystemXmlApplicationContext(ProjectUtil.toFullPath("properties/applicationContext.xml"));
 8         } finally {
 9             Thread.currentThread().setContextClassLoader(oldLoader);
10         }
11     }

ProjectUtil.toFullPath()方法在陈刚的BLOG中有详细的说明,是一个获得项目绝对路径的方法。另外在陈刚的BLOG中提到了,在Eclipse 3.2M6中已经不需要转换ClassLoader。但是,我用的是3.2 release版,还是需要转换ClassLoader才能正常工作啊。觉得这并不像陈刚所说的BUG,Eclipse的每个Plugin都有自己的ClassLoader,所以需要转换吧。

    然后,在start方法中调用initializeApplicationContext方法,并为ctx提供getter

1     public void start(BundleContext context) throws Exception {
2         super.start(context);
3         initializeApplicationContext();
4     }
5 
6     public ApplicationContext getApplicationContext() {
7         return this.ctx;
8     }


这样我们在其他地方就可以用Activator.getDefault().getApplicationContext()得到ApplicationContext了。

        但是,新的问题又来了,如何把RCP中的组件也纳入Spring的管理呢,比如ViewPart。我又Google了一下,在今年的TSE2006上有一场报告就提到了Spring同Eclipse RCP的整合 ,里面提到了利用Eclipse的     IExecutableExtensionFactory和IExecutableExtension接口,确实非常的简单。
        通常,我们自己定义的ViewPart是通过扩展点org.eclipse.ui.views,由Eclipse的Workbench自动创建,像这样:

<extension point="org.eclipse.ui.views">
<view
          name="myView"
          class="org.eclipse.example.rcpspring.MyView"
          id="org.eclipse.example.rcpspring.view">
</view>
</extension>

     
       现在我们通过Spring来管理这个view,并假设为其注入一个businessService Bean,像这样:

<bean id="myView" class="org.eclipse.example.rcpspring.MyView">
<property name="businessService" ref="businessService"/>
</bean>


       然后,我们要创建一个Extension Factory来在RCP中注册这个view,代码如下:
 1 public class MyViewExtensionFactory implements IExecutableExtensionFactory,
 2         IExecutableExtension {
 3     private ViewPart view;
 4 
 5     public Object create() throws CoreException {
 6         return this.view;
 7     }
 8 
 9     public void setInitializationData(IConfigurationElement config,
10             String propertyName, Object data) throws CoreException {
11         this.view = (MyView)Activator.getDefault().getApplicationContext().getBean("myView");
12         this.view.setInitializationData(config, propertyName, data);
13     }
14 }



通过Activator.getDefault().getApplicationContext()来取出上面建立的ApplicationContext。

      最后,我们要用这个MyViewExtensionFactory来注册扩展点,如下:

<extension point="org.eclipse.ui.views">
<view
name="myView"
class="org.eclipse.example.rcpspring.MyViewExtensionFactory"
id="org.eclipse.example.rcpspring.view">
</view>
</extension>


用MyViewExtensionFactory 来取代原来的MyView 。

       好,已经大功告成。MyView已经成功的进入了Spring框架的管理。其他的RCP扩展点也可以如此炮制。

http://www.duduwolf.com/wiki/2006/154.html
分享到:
评论

相关推荐

    Eclipse RCP与Spring OSGi技术详解与最佳实践

    《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自...实战篇(第13-15章)详细讲解了Eclipse RCP与Spring OSGi框架、Hibernate ORM框架、JPA规范、Maven工具的整合,以及它与Java的模块化设计

    Eclipse RCP+Spring建胖客户端Web程序

    - **整合Spring与Eclipse RCP**:利用Spring的IoC容器管理Eclipse RCP中的各个组件,确保每个组件都能正确初始化和协作。 #### 4. 总结 通过以上步骤,我们成功地构建了一个基于Eclipse RCP的富客户端Web程序,并...

    在Eclipse RCP中应用Spring OSGI 管理bean(一)

    标题中的“在Eclipse RCP中应用Spring OSGI 管理bean(一)”表明这是一篇关于如何在Eclipse Rich Client Platform (RCP)应用程序中集成Spring框架,并利用OSGi服务来管理Bean的教程。Eclipse RCP是一个用于构建桌面...

    eclipse rcp应用系统开发方法与实战源代码.zip

    在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...

    Eclipse RCP 软件打包发布方法

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...

    Eclipse rcp深入浅出中英文版及配套代码

    6. **命令(Command)与菜单(Menu)**:Eclipse RCP的命令系统允许动态创建和绑定菜单项,实现了行为与表示的分离。 7. **服务(Service)**:服务是一种共享的、可插入的组件,提供特定的功能,如文件I/O或网络...

    EclipseRCP教程

    Eclipse RCP 教程 Eclipse RCP(Rich Client Platform)是一种基于 Eclipse 平台的客户端开发技术,能够帮助开发者快速构建功能强大且界面美观的桌面应用程序。在本教程中,我们将详细介绍 Eclipse RCP 的开发过程...

    Eclipse RCP.pdf清晰版

    ### Eclipse RCP 入门详解 #### 一、Eclipse RCP 概述 **Eclipse RCP**(Rich Client Platform)是一种构建丰富客户端应用程序的框架,它利用Eclipse平台的强大功能来创建高度定制化的桌面应用程序。通过RCP,...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...

    Eclipse Rcp

    Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许...Eclipse RCP的应用程序继承了Eclipse的风格与功能,通过RCP构建的应用程序可以脱离Eclipse环境独立运行,这对于开发Java桌面应用程序具有重要的意义。

    eclipse RCP mp3工程

    【标题】"eclipse RCP mp3工程"指的是一个基于Eclipse Rich Client Platform(RCP)构建的专门处理MP3音频文件的应用程序。Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和...

    eclipse RCP Plug-in开发自学教程.pdf

    eclipse RCP Plug-in开发自学教程 eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法...

    EclipseRcp 例子程序

    8. **模型与数据绑定**:Eclipse RCP提供了数据绑定机制,使得UI控件可以自动与模型对象同步。例子中可能会包含如何使用.databinding包来实现数据绑定的实例。 9. **国际化(i18n)**:Eclipse RCP支持多语言环境,...

    Eclipse RCP培训.zip

    13. **部署与发布**:Eclipse RCP应用可以打包为可执行的RCP产品,通过Eclipse PDE工具进行发布,确保用户可以在各种平台上运行。 通过学习和实践这些知识点,开发者可以熟练掌握Eclipse RCP,构建出高效、稳定且...

    documents about Eclipse RCP

    文件`nb-vs-eclipse.pdf`可能对比了Eclipse RCP与NetBeans等其他开发环境,阐述了Eclipse RCP的插件优势。 3. **开发流程**:文档可能涵盖了从创建项目、定义插件、构建用户界面到调试和发布应用的整个开发流程。`...

    Eclipse RCP 插件开发指南

    通过使用Eclipse RCP,开发者可以创建高度可定制和扩展的应用程序,这些应用不仅具有强大的功能,而且还能与其他Eclipse插件无缝集成。 ##### Eclipse Workbench Eclipse Workbench 是 Eclipse RCP 的核心组成部分...

    Eclipse RCP开发详解

    Eclipse RCP允许开发者创建功能丰富的、可扩展的应用程序,这些应用程序拥有与Eclipse集成开发环境相同级别的质量和用户体验。在"**Eclipse RCP开发详解**"中,我们将深入探讨这个主题,帮助你快速掌握Eclipse RCP...

    菜鸟EclipseRCP学习之路

    在IT行业中,Eclipse RCP(Rich Client Platform)是一个强大的框架,用于构建桌面应用程序。它基于Java语言,由Eclipse基金会开发,为开发者提供了一套完整的工具集来创建功能丰富的、可扩展的应用程序。"菜鸟...

    Eclipse RCP详细教程

    ### Eclipse RCP 详细教程 #### 1. 富客户端平台 ##### 1.1. 概述 Eclipse RCP(Rich Client Platform)是一种基于Java的框架,它允许开发者构建高度可定制和可扩展的桌面应用。这些应用通常具有丰富的用户界面,...

    Eclipse RCP 应用系统开发方法与实战

    "Eclipse RCP 应用系统开发方法与实战"这个主题涵盖了如何利用Eclipse RCP进行高效开发的理论和实践技巧。 1. **Eclipse RCP基础知识**:Eclipse RCP的核心是插件体系结构,允许开发者通过编写插件来扩展功能。每个...

Global site tag (gtag.js) - Google Analytics