カスタムプラグインファクトリー


プラグイン ファクトリをカスタマイズするには 2 つの方法があります:
  • アノテーションを使用してプラグイン ファクトリを設定する アノテーション パラメータは次のように説明されます: @PluginFactory

    QQ截图20170207104507.png

    サンプル コード:

        @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 インターフェイスのイベント メソッドと説明は次のとおりです。

    QQ截图20170207104529.pngサンプルコード:

    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());
        }
    }