在eclipse rcp中使用spring框架

在eclipse rcp中使用spring框架
                                 在eclipse rcp中使用spring框架

很久就想了如何在Rcp程序中使用Spring。让Spring容器来管理我们rcp程序中的Beans。看到web项目中使用了spring后带来的好处(最直接的就是看到代码量少了)就一脸的憧憬。想我的好日子什么时候才会来啊。

有这个憧憬后我就开始考虑改如何做了。大家肯定都知道如果在eclipse rcp程序中使用直接使用springbeanfactory无论你是使用方式都会说找不到配置文件的。这个其中的原因是Eclipse 的每个插件都使用他们自己的类加载器(class load

说明:eclipse中类的详细的装载过程可以产考《Contributing to eclipse 中文版》p44

所以说能够正确的找到bean的配置文件成了一个难题。

还有一个问题就是如何管理BeanFactory也是一个问题。

既然提出了这两个问题,那就的一个一个的面对啊。

第一个问题的解决方式。只要通过一个插件中的类就可以获得。

我试了一下通过如下代码可以切换class load

最头疼的问题就是如何来管理springBeanFactory。如果在每个Plugin类的继承类里都加上对beanfactory的创建。想想都是很恶心的事情。就为这个事情一直停滞不前。搞的我快郁闷死掉了。

就在快死还没有死的时候看到了一个叫EclipseSpring项目(http://sourceforge.net/projects/eclipse-spring/)。一看超爽。他直接把我想做的事情直接给做了。

下面我们就来看看一下他的发布包里代的那个例子。这个例子很简单。就只是提供了一个 view View 里显示一个条问候语。
simple view.jpg

呵呵,是不是很界面太简单了。这个我们就不说了。我们来说说他这个示例中到底是怎么实现的。

先看看他的 plugin.xml 文件把。

pluginxml.jpg

看看那个org.eclipse.ui.view那个扩展点。是不是有点奇怪啊。他的类是net.sourceforge.eclipsespring.SpringExtensionFactory:example/userNameView这个样子的。一言看上去就不是一个类。而是一个类代了点参数。

不过可以断定他就是上图显示的view了。

在看看上面那个扩展点

<extension

         point="net.sourceforge.eclipsespring.beanFactoryContributors">

      <beanFactoryContributor

            class="net.sourceforge.eclipsespring.example.spring.BeanFactoryContributor"

            id="example"/>

   </extension>

这个扩展点干吗用的啊。嗯是一个问题。

插件文件下面除了一个 plugin.xml 文件外。还有一个 bean.xml 的文件。
springdiagram.jpg

这下一看,明白了她就一个spring需要的配置文件。并包括了对view的申明。

net.sourceforge.eclipsespring.beanFactoryContributors这个名字可以看出他是对beanFactory做了一个扩展。

去这个类看一下,是怎么回事。

只是发现了
getresource.jpg
一看可以知道。它在这里初始化了 spring 的配置文件。
这个插件项目的整个类图为
classes.jpg

稍微回顾一下。在一个plugin中要有BeanFactoryContributorspring配置文件合上net.sourceforge.eclipsespring插件就可以使用spring了。

关于在这个过程中 beanFactory 如何创建,和扩展点如何被调用。我会在下一篇里说明。今天想睡了,虽然有点早。呵呵

你可能感兴趣的:(在eclipse rcp中使用spring框架)