放棄SpringBoot !用基于Solon的H-Spi構(gòu)建一個插件化業(yè)務(wù)平臺
為什么使用Solon H-Spi?
構(gòu)建java工程(c/js/py..),一般會使用預(yù)制法,構(gòu)建系統(tǒng)內(nèi)各個小部件、小模塊。使得在開發(fā)運維時,更快適應(yīng)業(yè)務(wù)變化和市場變化。
場景:工程應(yīng)用功能,又小、又散、又敏捷。
能力:運營開發(fā)方面,需要靈敏、需要自由組裝。
那么Solon官方給的解析是:
插件熱插拔管理機制(H-Spi)
插件熱插拔管理機制,簡稱:H-Spi。是框架提供的生產(chǎn)時用的另一種高級擴展方案。相對E-Spi,H-Spi 更側(cè)重隔離、熱插熱拔、及管理性。
應(yīng)用時,是以一個業(yè)務(wù)模塊為單位進行開發(fā),且封裝為一個獨立插件包。
1、特點說明
所有插件包 “獨享” ClassLoader、AppContext、配置;完全隔離
可通過 Solon.app(), Solon.cfg(), Solon.context() 等...手動獲取主程序或全局的資源
模塊可以打包成一個獨立的插件包(放在體外加載),也可以與主程序一起打包。“分”或“合”也是自由!
更新插件包,不需要重啟主服務(wù)。熱更新!
開發(fā)時,所有資源完全獨立自控。且必須完成資源移除的任務(wù)
模塊之間的通訊,盡量交由事件總線(EventBus)處理。且盡量用弱類型的事件數(shù)據(jù)(如Map,或 JsonString)。建議結(jié)合 "DamiBus" 一起使用,它能幫助解耦
主程序需要引入 "solon-hotplug" 依賴,對業(yè)務(wù)插件包進行管理
2、關(guān)于 ClassLoader 隔離
在 ClassLoader 隔離下,開發(fā)業(yè)務(wù)是比較麻煩的。注意:
父級 ClassLoader (一般,公共資源放這里)
子級,可以獲取并使用它的類或資源
如果有東西注冊,在插件 stop 事件里要注銷掉
同級 ClassLoader
同級,無法相互使用類或資源
不要有顯示類的交互
一般通過事件總線進行交互
交互的數(shù)據(jù)一般用父級 ClassLoader 的實體類
或者用弱類型的數(shù)據(jù),如 json(像使用遠程接口那樣對待)
盡量讓插件之間,相互比較獨立,不需要什么交互(或少量使用事件總線交互)。
用一張圖說明,H-Spi為我們處理了什么:

上圖,綠色部分,按需打包:
- 可以完全打包到主應(yīng)用中
- 將主應(yīng)用、文章插件、財務(wù)插件等等插件。全部各自獨立打包
- 主應(yīng)用,上傳插件包,即可啟動具體插件。
項目分享 (基于Solon的H-Spi構(gòu)建的插件化業(yè)務(wù)平臺)
基于Solon的H-Spi構(gòu)建的插件化業(yè)務(wù)平臺 https://gitee.com/uidoer/solon-manager
簡介:
Solon-Manager 基于Solon的不分離系統(tǒng)。 引入h-spi插件管理,方便平臺化管理你的功能插件(內(nèi)置cms管理系統(tǒng))。 插件開發(fā)方面,按開發(fā)指引,開發(fā)者自行開發(fā)插件。 上傳后,在系統(tǒng)內(nèi),自行上傳jar包,按需擴展、運行插件功能。 技術(shù)選型: solon / layui / mybatis-plus / redis
solon 插件平臺化的操作方式:

這樣,我們就啟動了一個外部的插件到應(yīng)用中。這個過程是不需要重啟主應(yīng)用的。不需要停機進行安裝或者更新。
接下來,可以訪問該插件的入口: http:??/localhost:8080/cms/
(注意:上方鏈接的 /cms/ 部分是這個插件的入口)
這個插件運行的效果是:

那么,效果是了解了。那么如何開發(fā)呢?
開發(fā)步驟
git clone https://gitee.com/uidoer/solon-manager
- 推薦使用idea + mysql .
- 導(dǎo)入./doc/mysql.sql 和 ./doc/cms/sql/jfinal_project_center.sql
- 啟動solon-system(主應(yīng)用)啟動類是:vip.fuck.sm.SolonManagerApplication
- 打開主應(yīng)用入口:http://localhost:8080/index/login 進行登錄 ( admin / 123456 )
簡要提及:為了方便開發(fā)調(diào)試,我已經(jīng)在主應(yīng)用導(dǎo)入了 cms模塊<dependency> <groupId>vip.fuck.sm.plugins.cms</groupId> <artifactId>cms</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> - maven package 打包一下 cms模塊
- 將打包后的cms.jar包,上傳到主應(yīng)用進行啟動
- 打開cms首頁:http://localhost:8080/cms
- 打開cms后臺:http://localhost:8080///cms//admin/login ( admin / 123456 )
這樣,一把下來,就體驗了H-SPI帶來的構(gòu)建體驗、運行體驗。
同樣,如果感興趣的同學,可以fork,進行二開。
文檔教程:
- 開發(fā)文檔:Solon-Manager開發(fā)文檔wiki
- solon教程: Solon官網(wǎng)框架教程

浙公網(wǎng)安備 33010602011771號