簡體   English   中英

Spring機制類似於OSGI / Eclipse擴展點

[英]Spring mechanism similar to OSGI/ Eclipse extension point

我們編寫了一個在后台使用spring的框架。 有兩個應用程序使用此框架。 可以通過運行application1或application2或application1和application2來配置生產服務器。

現在,我正在尋找一種類似於OSGI擴展點思想的彈跳機制,以便每個應用程序都可以“貢獻”到框架,而無需配置文件(其中需要列出所有應用程序)。

完整的項目結構(簡化了;-):

框架:A,IPlugin,A.xml

應用程序1:B擴展IPlugin,b.xml

應用程序2:C擴展IPlugin,c.xml

解釋:“ A”使用IPllugin列表,如果必須完成特定任務,則將調用該列表。

我只是找到了將A聲明為原型並將“ B”和“ C”設置為屬性的春季方法。 因此,我必須在A.xml中明確列出兩者。 但是我想在b.xml和c.xml中配置貢獻。

問題:

  • 如果創建一種特殊類型的bean的實例,在spring中是否有可能被修改?

  • 春季是否有類似於OSGI / Eclipse擴展點的東西?

  • 還有其他建議嗎?

看一下Spring動態模塊 簡介的第一行說明了一切:

用於OSGi(tm)服務平台的Spring動態模塊項目使構建在OSGi框架中運行的Spring應用程序變得容易

其他人建議將OSGi與Spring-DM或Blueprint一起使用。 如果您確定那是您想要做的-並且我不確定自己是因為我不完全理解問題描述-那么您應該能夠將OSGi框架嵌入到現有應用程序中(是的,甚至在Tomcat中...)。

我寫了一篇有關如何嵌入OSGi的博客文章 ,這可能會幫助您入門。 但是,請先檢查一下帶有Spring-DM的OSGi是否真的是您想要的,如果需要幫助,請務必提出后續問題。

我的解決方案是在框架項目中創建一個“注冊表”,該項目將在春季以范圍“ singleton”創建。 因此,每個插件都可以對此注冊表做出貢獻,因為在應用程序服務器運行期間,所有插件都可以使用它。 由於應該創建每個插件,因此我使用了一個工廠的幫助,該工廠從spring-context創建了新的插件實例。

更多細節可以在我寫的一篇小文章中找到,可以下載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM