맞춤형 플러그인 팩토리
플러그인 팩토리를 사용자 정의하는 방법에는 두 가지가 있습니다.
주석 매개변수는 다음과 같이 설명됩니다.
@PluginFactory
샘플 코드:@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 인터페이스의 이벤트 방법 및 설명은 다음과 같습니다.
샘플 코드:
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()); } }