맞춤형 플러그인 팩토리


플러그인 팩토리를 사용자 정의하는 방법에는 두 가지가 있습니다.
  • 주석 매개변수는 다음과 같이 설명됩니다. @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);
    사용자 정의 플러그인 팩토리의 이벤트 수신 방법:

    The 사용자 정의 플러그인 팩토리의 이벤트 처리 방법은 기본 플러그인 팩토리와 다르므로 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());
        }
    }