codecamp

自定义插件工厂

自定义插件工厂有两种方式:
  • 通过@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());
        }
    }
插件工厂
插件结构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }