實(shí)現(xiàn)功能
將所有放在plugins目錄下的所有符合plugin編寫規(guī)范的plugin jar包加載到整個(gè)guice context中
實(shí)現(xiàn)步驟
1、找到所有plugin目錄下的所有jar包
2、分別找到j(luò)ar包中META-INF/services/com.hivemq.spi.HiveMQPluginModule文件讀取第三方plugin配置的HiveMQPluginModule子類全路徑
3、然后依次實(shí)例化它。
類圖
這次的類圖比上次的相比簡(jiǎn)單多了,加載機(jī)制也跟其他的有plugin機(jī)制的加載比較類似。所以大概說一下加載步驟即可。
1、PluginBootstrap通過PluginLoader去加載Plugin,獲得到HiveMQPluginModule的列表,并將其注冊(cè)到guice中。
2、PluginLoader使用PluginFinder獲得到所有Plugin類型,并使用IsolatedPluginLoader對(duì)多余的依賴進(jìn)行排除,并實(shí)例化出來對(duì)應(yīng)的HiveMQPluginModule實(shí)現(xiàn)的實(shí)例。
3、這樣所有插件就可以加載出來了。
具體的插件開發(fā)以及體會(huì)本文中的加載處理方式,需要大家開發(fā)一個(gè)HiveMQ插件,就可以對(duì)本文中的處理邏輯。
http://www.hivemq.com/docs/plugins/latest/
示例
在HiveMQ官網(wǎng)有各種插件示例源碼,通過他們的Plugin Developer Guide相信大家可以開發(fā)出符合自己業(yè)務(wù)的插件,實(shí)現(xiàn)自己的業(yè)務(wù)邏輯處理。
http://www.hivemq.com/plugins/