當前位置:編程學習大全網 - 源碼下載 - 實戰之jvm-sandbox動態加載插件實現

實戰之jvm-sandbox動態加載插件實現

在實際應用中,當我們某些功能點開發完成的時候,需要重啟部署才能夠讓功能得到應用。但這個功能比較適合插件開發,將功能拆分成壹個個獨立的jar來提供功能點的拆組。

假設我們現在有發短信和發送郵件的功能,這個時候我們需要再加壹個發送微信或者釘釘消息的功能。

我們希望這兩部分對接第三方的功能插件式開發,分別是兩個獨立的jar,各自負責各自的功能。

在開發完成之後,無需重啟應用,直接放在特定的位置,讓應用直接去刷新加載這兩個jar就行了。

實際上確實有方法,最近開發 jvm-sandbox 的時候,發現它就有壹個這樣的功能。

它是如何去做的呢?

給定壹個jar的路徑,然後去掃描以jar結尾的包路徑。

這只是壹個實例版本的,如果還想基於屬性註入的話,可以將註釋那塊解開。

以上的案例是基於 Components 接口來 掃描的,需要jar中定義 META-INF\services\com.sandbox.manager.api._Components_ 中的實現類。比如

妳如果嫌麻煩可以使用 kohsuke 包,只需在類上要定義: (註意還需要實現該接口),無需手動去創建文件和實現。

pom文件引入:

GroupContainerHelper 妳可以理解為壹個Map,前提是屬性的對象在Map中存在,存在則將對象賦值出去

功能差不多就這樣實現的,如果是Spring的話,可以使用工廠解析SPI掃描到的類。

當然啦,後續的實現妳想怎麽玩都行。

至於怎麽已經加載過的包或者刷新等功能本文就不過多贅述。

如果妳有好的方式也可以留言交流喔。

  • 上一篇:GridView實現右鍵菜單
  • 下一篇:linux內核源代碼介紹
  • copyright 2024編程學習大全網