自定义插件工厂
自定义插件工厂有两种方式:
通过
@PluginFactory
注解配置插件工厂,注解参数说明如下:参数 说明 pluginHome 插件存放路径,必需提供; autoscanPackages 自动扫描路径,默认为插件工厂所在包路径; automatic 插件是否自动启动,默认为true; includedClassPath 是否加载当前CLASSPATH内的所有包含插件配置文件的JAR包,默认为false; listenerClass 插件生命周期事件监听器类对象, 可选配置; 示例代码:
@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 { }
通过工厂配置对象实例化
创建工厂配置对象:
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());
创建并初始化插件工厂实例对象:
IPluginFactory _factory = new DefaultPluginFactory(); _factory.init(_conf);
自定义插件工厂的事件监听方法:
自定义插件工厂的事件处理方式与默认插件工厂不同,须通过实现IPluginEventListener接口完成插件生命周期事件监听,IPluginEventListener接口事件方法及说明如下:
事件 说明 onInited 插件初始化事件; onStarted 插件启动事件; 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()); } }