W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
通過(guò)@PluginFactory
注解配置插件工廠,注解參數(shù)說(shuō)明如下:
參數(shù) | 說(shuō)明 |
---|---|
pluginHome | 插件存放路徑,必需提供; |
autoscanPackages | 自動(dòng)掃描路徑,默認(rèn)為插件工廠所在包路徑; |
automatic | 插件是否自動(dòng)啟動(dòng),默認(rèn)為true; |
includedClassPath | 是否加載當(dāng)前CLASSPATH內(nèi)的所有包含插件配置文件的JAR包,默認(rèn)為false; |
listenerClass | 插件生命周期事件監(jiān)聽(tīng)器類對(duì)象, 可選配置; |
示例代碼:
@PluginFactory(pluginHome = "${root}/plugins") public class DemoPluginFactory extends DefaultPluginFactory { } // 或者 @PluginFactory(pluginHome = "${root}/plugins", autoscanPackages = {"com.company", "cn.company"}, automatic = true, includedClassPath = false, listenerClass = DemoPluginEventListener.class) public class DemoPluginFactory extends DefaultPluginFactory { }
通過(guò)工廠配置對(duì)象實(shí)例化
創(chuàng)建工廠配置對(duì)象:
DefaultPluginConfig _conf = new DefaultPluginConfig(); _conf.setPluginHome(new File(RuntimeUtils.replaceEnvVariable("${root}/plugins"))); _conf.setAutomatic(true); _conf.setAutoscanPackages(Arrays.asList("com.company", "cn.company")); _conf.setIncludedClassPath(false); _conf.setPluginEventListener(new DefaultPluginEventListener());
創(chuàng)建并初始化插件工廠實(shí)例對(duì)象:
IPluginFactory _factory = new DefaultPluginFactory(); _factory.init(_conf);
自定義插件工廠的事件監(jiān)聽(tīng)方法:
自定義插件工廠的事件處理方式與默認(rèn)插件工廠不同,須通過(guò)實(shí)現(xiàn)IPluginEventListener接口完成插件生命周期事件監(jiān)聽(tīng),IPluginEventListener接口事件方法及說(shuō)明如下:
事件 | 說(shuō)明 |
---|---|
onInited | 插件初始化事件; |
onStarted | 插件啟動(dòng)事件; |
onShutdown | 插件停止事件; |
onDestroy | 插件銷毀事件; |
示例代碼:
public class DemoPluginEventListener implements IPluginEventListener { public void onInited(IPluginContext context, IPlugin plugin) { System.out.println("onInited: " + context.getPluginMeta().getName()); } public void onStarted(IPluginContext context, IPlugin plugin) { System.out.println("onStarted: " + context.getPluginMeta().getName()); } public void onShutdown(IPluginContext context, IPlugin plugin) { System.out.println("onShutdown: " + context.getPluginMeta().getName()); } public void onDestroy(IPluginContext context, IPlugin plugin) { System.out.println("onDestroy: " + context.getPluginMeta().getName()); } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: