在Eclipse RCP中使用Spring框架
很久就想了如何在Eclipse RCP程序中使用Spring。讓Spring容器來管理我們RCP程序中的Beans??吹絯eb項(xiàng)目中使用了spring后帶來的好處(最直接的就是看到代碼量少了)就一臉的憧憬。想我的好日子什么時(shí)候才會(huì)來啊。
有這個(gè)憧憬后我就開始考慮改如何做了。大家肯定都知道如果在Eclipse RCP程序中使用直接使用spring的beanfactory無論你是使用方式都會(huì)說找不到配置文件的。這個(gè)其中的原因是Eclipse 的每個(gè)插件都使用他們自己的類加載器(class load)
說明:Eclipse中類的詳細(xì)的裝載過程可以產(chǎn)考《Contributing to Eclipse 中文版》p44。
所以說能夠正確的找到bean的配置文件成了一個(gè)難題。還有一個(gè)問題就是如何管理BeanFactory也是一個(gè)問題。既然提出了這兩個(gè)問題,那就的一個(gè)一個(gè)的面對(duì)啊。***個(gè)問題的解決方式。只要通過一個(gè)插件中的類就可以獲得。
我試了一下通過如下代碼可以切換class load。最頭疼的問題就是如何來管理spring的BeanFactory。如果在每個(gè)Plugin類的繼承類里都加上對(duì)beanfactory的創(chuàng)建。想想都是很惡心的事情。就為這個(gè)事情一直停滯不前。搞的我快郁悶死掉了。
就在快死還沒有死的時(shí)候看到了一個(gè)叫EclipseSpring項(xiàng)目(http://sourceforge.net/projects/Eclipse-spring/),專門為在Eclipse中使用Spring打造的。一看超爽。他直接把我想做的事情直接給做了。
下面我們就來看看一下他的發(fā)布包里代的那個(gè)例子。這個(gè)例子很簡(jiǎn)單。就只是提供了一個(gè)view。View里顯示一個(gè)條問候語。
EclipseSpring項(xiàng)目中的View
呵呵,是不是很界面太簡(jiǎn)單了。這個(gè)我們就不說了。我們來說說他這個(gè)示例中到底是怎么實(shí)現(xiàn)的。
先看看他的plugin.xml文件把。
看看那個(gè)org.Eclipse.ui.view那個(gè)擴(kuò)展點(diǎn)。是不是有點(diǎn)奇怪啊。他的類是net.sourceforge.Eclipsespring.SpringExtensionFactory:example/userNameView這個(gè)樣子的。一言看上去就不是一個(gè)類。而是一個(gè)類代了點(diǎn)參數(shù)。
不過可以斷定他就是上圖顯示的view了。
在看看上面那個(gè)擴(kuò)展點(diǎn)
- <extension
- point="net.sourceforge.eclipsespring.beanFactoryContributors">
- <beanFactoryContributor
- class="net.sourceforge.eclipsespring.example.spring.BeanFactoryContributor"
- id="example"/>
- </extension>
這個(gè)擴(kuò)展點(diǎn)干嗎用的啊。嗯是一個(gè)問題。
【編輯推薦】