亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于Eclipse開發輕量級Spring插件

2019-11-18 11:38:26
字體:
來源:轉載
供稿:網友
摘要 本文介紹如何在Eclipse中利用SPRing框架作為一個平臺來創建輕量級的能夠與你的現有J2EE應用程序無縫集成的插件。

  一. 引言

  一般地,企業軟件產品都要求在客戶端具有定制能力,而且當客戶必須修改核心產品的配置來引入他們自己的定制時一般都要求進行更新操作。借助于易于擴展和可升級的高度模塊化的軟件,插件技術能夠提供針對這種典型場所下的完美解決方案。

  注釋1-什么是插件呢?一個插件是使用什么樣的代碼構成的?

  在眾多的定義當中,我認為最好的定義當屬Eclipse工程中所定義的:插件是一種代碼貢獻,它能夠把代碼添加到一個系統中的眾所周知的擴展點處。也就是說,一個插件是一個良好定義的代碼包(例如一個jar文件或目錄),它提供足夠的配置能力來實現在系統中的一個特定的眾所周知的位置插入和激活自身。

  插件本身還可以定義另外的其它插件能夠擴展的擴展點。一個擴展點定義了一個語言接口(該插件將提供它的一個實現)和使用該被發現的插件的組件。一個擴展點能夠接受被動態地發現和在運行時刻配置的插件。

  借助于一種擁有清楚定義的擴展點的插件環境,核心產品可以自由升級,而且插件本身可以根據獨立的計劃發行和升級。例如,借助于我的開源Classpath助理工程(基于Eclipse的插件框架),我可以按常規來升級我的Eclipse,而且還可以輕松地發行我自己的插件的更新版本。

  非凡對于java開發者來說,與現有J2EE組件(參考"注釋2-J2EE組件不是插件嗎?")相比,插件提供了一種更好的升級技術??梢栽O想你的許多EJB是由不同的開發小組構建的;然后,在了解它們能夠良好工作的情況下,就可以把它們整合到一個應用程序中。一個插件架構應該是答應進行這種級別的組件化的。

  注釋2-J2EE組件不是插件嗎?

  是的,J2EE組件,例如EJB和Servlet,都不是插件。盡管它們都具有一定程度的"可插入性"(這是指,你能夠交換一個EJB或Servlet實現),但是配置它們并不那么清楚明快,而且它們缺乏一個插件所具有的輕易的升級能力。例如,Servlet無法把代碼與配置結合到一起。因此,盡管你能夠在其自己的jar文件中打包一個servlet實現;但是,此時你往往需要修改web.xml以便servlet容器能夠識別它。

  乍看上去,EJB似乎更象插件-它們包含提供有關自己信息的發布描述符。然而,EJB也不是插件,因為,典型情況下,它們都要求外部配置(一種在EAR的application.xml中的引用);并且,典型地,它們在其各自的發布描述符中進行彼此參考。這兩種特征都使一個EJB無法成為"插件式可發布的"。

  借助于流行的Spring框架的BeanFactoryPostProcessor接口,開發者可以輕松地創建一個輕量級插件框架。本文正是想討論如何實現這一點;同時,還要向你展示一個使用輕量級插件的工作示例。

  二. 預備你的插件平臺

  在你的平臺能夠支持可插入的組件前,它需要滿足下列兩個標準:

  · 組件必須是自發現的。你已經了解到J2EE組件不能成為真正插件的準確理由。典型情況下,你應該找到一個需要升級的外部配置文件以便該平臺能夠感知新的代碼。

  · 組件必須包含足夠信息以便在應用程序內部集成或配置其本身。

  假如你僅是添加一些不需要與系統進行協作的代碼(也就是說,松耦合的),那么自動發現就是很簡單的。真正的挑戰是結合有緊密集成的自發現。

  三. Spring中的自發現功能

  事實證實,Spring實際上為支持插件開發作了比較好的預備。Spring已經能夠在若干種bean上下文文件中存儲配置,并且它使得自發現配置文件非常簡單。例如,下面的Spring語句自動發現以ctx.xml結尾的存在于classpath的META-INF/services目錄下的任何文件:

<import resource="classpath*:META-INF/services/*.ctx.xml" />
  這種現成的功能正是當構建輕量級插件框架時你要利用的一個特色。

  注重,Spring并不關心它自己的代碼自動發現功能。這通常不是一個問題,因為大多數J2EE容器都提供一個lib目錄,存放于這個目錄下的任何jar文件將被自動地添加到classpath中。這意味著,假如你想以jar文件形式捐獻你的代碼的話,那么在任何一種J2EE容器中實現自發現都會是相當輕易的事情。

  在一個應用程序服務器外,使用例如ant這樣的工具來實現jar文件的自發現也是非常輕易的。下列的Apache Ant XML以一種與一個應用程序服務器類似的方式檢測所有的存在于lib目錄下的jar文件:

<path id="classpath">
<fileset dir="${basedir}/lib">
<include name="**/*.jar"/>
</fileset>
</path>

<target name="start.server" description="launches the server process">
<java classname="platform.bootstrap.Server">
<classpath refid="classpath" />
</java>
</target>


  因此,盡管Spring并不直接支持自發現功能,但是通過使用標準技術,你仍然可以使你的代碼輕易地實現自發現。這一點,與Spring的能夠自動檢測配置的能力相結合,就可以使你既能夠實現代碼捐獻的目的也能夠使你的代碼在系統中被發現和激活。 四. 在Spring中實現自配置

  你需要進一步實現的是,使插件具有自配置能力。盡管Spring并不直接支持這種功能,但是,借助于它提供的一些工具,實現這一目標也是相當直接的。實現自配置的要害部分是BeanFactoryPostProcessor,這是一個Spring調用的接口(該調用應該是在所有配置被發現和加載到一個內存描述之后,但在創建實際的對象之前發生)。

  通過使用BeanFactoryPostProcessor,你可以動態地把所有的bean組合到一起而不必修改原始的文件系統配置。下列代碼是我的BeanFactoryPostProcessor實現的核心部分:PluginBeanFactoryPostProcessor(下載源碼中提供了完整的類):

private String extensionBeanName;//經由spring設置(在此沒有顯示setter)
private String propertyName;//經由spring設置(在此沒有顯示setter)
private String pluginBeanName;//經由spring設置(在此沒有顯示setter)
/*
*(非Javadoc)
*@請參考BeanFactoryPostProcessor#postProcessBeanFactory(ConfigurableListableBeanFactory)
*/
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory)
throws BeansException {



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美专区日韩视频| 亚洲一区二区三区在线免费观看| 91成人在线视频| 在线观看精品国产视频| 成人免费观看49www在线观看| 亚洲精品福利在线| 亚洲国产天堂久久综合网| 亚洲激情在线视频| 尤物tv国产一区| 欧美成人在线网站| 亚洲高清久久网| 91成人国产在线观看| 日韩欧美999| 91精品国产99久久久久久| 国产日韩欧美综合| 在线看国产精品| 亚洲男人第一av网站| 欧美大片免费观看在线观看网站推荐| 欧美情侣性视频| 久久99精品久久久久久琪琪| 日韩电影大全免费观看2023年上| 欧美剧在线观看| 成人黄色av网站| 亚洲国产又黄又爽女人高潮的| 少妇高潮久久77777| 欧美精品福利视频| 亚洲性无码av在线| 亚洲国产美女久久久久| 国产99视频在线观看| 欧美综合在线观看| 欧美中文在线观看国产| 色综合久久久888| 欧美性猛交丰臀xxxxx网站| 亚洲乱码一区二区| 国产成+人+综合+亚洲欧美丁香花| 久久久久久久999精品视频| 国产精品美女999| 97在线看免费观看视频在线观看| 国产精品影院在线观看| 日本一区二区三区在线播放| 欧美成人精品激情在线观看| 欧美激情一区二区三区在线视频观看| 91av在线免费观看| 日韩av免费在线播放| 国产a∨精品一区二区三区不卡| 欧美又大又硬又粗bbbbb| 亚洲精品短视频| 欧美日韩综合视频网址| 亚洲最新av在线| 亚洲高清av在线| 久久精品美女视频网站| 欧美亚洲另类激情另类| 久久大大胆人体| 奇米影视亚洲狠狠色| 国产日韩欧美影视| 97在线观看免费| 久久精品国产一区二区三区| 亚洲国产精品va在线观看黑人| 国产精品一香蕉国产线看观看| 色综合久久中文字幕综合网小说| 日韩精品免费一线在线观看| 久久久久久免费精品| 亚洲黄在线观看| 欧美成人精品激情在线观看| 欧美激情亚洲国产| 国产精品入口免费视| 欧美限制级电影在线观看| 欧美激情奇米色| 亚洲国产精品久久精品怡红院| 久久久久久久一区二区三区| 九色精品美女在线| 中文字幕国产亚洲2019| 亚洲美女黄色片| 国产在线视频2019最新视频| 国产视频在线观看一区二区| 欧美日韩国产一中文字不卡| 国产精品伦子伦免费视频| 欧美日韩激情视频| 色综合天天狠天天透天天伊人| 日韩电视剧免费观看网站| 91精品国产乱码久久久久久久久| 成人av色在线观看| 色先锋资源久久综合5566| 国产精品爽爽爽| 美乳少妇欧美精品| 2019av中文字幕| 国内精品一区二区三区四区| 欧美电影在线免费观看网站| 成人av.网址在线网站| 欧美精品成人91久久久久久久| 欧美夫妻性生活xx| 欧美精品在线观看91| 亚洲精品日产aⅴ| 欧美日韩国产综合视频在线观看中文| 国产一区视频在线| 亚洲乱码av中文一区二区| 国产乱肥老妇国产一区二| 国产福利精品视频| 亚洲欧洲日产国码av系列天堂| 国产精品专区h在线观看| 亚洲美女福利视频网站| 两个人的视频www国产精品| 日韩精品电影网| 欧美多人爱爱视频网站| 日本久久亚洲电影| 欧美午夜无遮挡| 欧美性色xo影院| 97免费在线视频| 亚洲午夜小视频| 欧美日本在线视频中文字字幕| 国产大片精品免费永久看nba| 欧美中文字幕在线播放| 日韩中文字幕视频在线观看| 91豆花精品一区| 欧美在线观看日本一区| 久久91超碰青草是什么| 久久这里有精品视频| 日韩在线不卡视频| 欧亚精品在线观看| 欧美国产一区二区三区| 91精品国产精品| 亚洲激情视频在线播放| 亚洲激情视频在线观看| 亚洲аv电影天堂网| 国产精品福利在线观看网址| 国产精品国产三级国产aⅴ浪潮| 黑人巨大精品欧美一区二区三区| 亚洲欧美日本精品| 久久中国妇女中文字幕| 国产不卡视频在线| 91精品中国老女人| 国产精品久久二区| 国产又爽又黄的激情精品视频| 中文字幕亚洲情99在线| 久久综合免费视频影院| 九九久久国产精品| 96精品久久久久中文字幕| 欧美美女15p| 亚洲成人黄色在线| 精品国产一区二区三区四区在线观看| 9.1国产丝袜在线观看| 亚洲精品国产品国语在线| 国产精品久久久久国产a级| 福利视频第一区| 欧美尤物巨大精品爽| 欧美精品在线看| 国产综合香蕉五月婷在线| 亚洲少妇激情视频| 国产免费一区视频观看免费| 亚洲97在线观看| 国内伊人久久久久久网站视频| 欧美电影免费观看大全| 亚洲欧美精品一区二区| 亚洲成人黄色在线| 欧美肥臀大乳一区二区免费视频| 欧洲美女7788成人免费视频| 91中文在线视频| 久久亚洲精品国产亚洲老地址| 欧美激情免费在线| 亚洲电影免费观看高清完整版在线| 日韩精品中文字幕久久臀| 亚洲精品网址在线观看| 久久综合五月天| 亚洲欧美国产一区二区三区|