プラグインの実装と使用
IPlugin インターフェイスを実装するクラスで @Plugin
アノテーションを宣言して、プラグイン スタートアップ クラスを作成します。これは、プラグイン ファクトリによってロードおよび管理されます。複数のプラグイン起動クラスが含まれており、各プラグイン起動クラスは独自のビジネス インターフェイスを実装して外部サービスを提供できます @Plugin
注解来创建插件启动类,其将被插件工厂加载和管理,一个插件包可以包括多个插件启动类,每个插件启动类可以实现自己的业务接口对外提供服务;
@Plugin
@Plugin
アノテーション パラメータの説明:id:プラグインの一意の ID。入力されていない場合は、初期化クラス名が使用されます。 MD5 暗号化後の値が ID として使用されます。
name: プラグイン名、デフォルトは "" です。 : プラグインのエイリアス、デフォルトは "";
author: プラグインの作成者、デフォルトは "";
email: 連絡先のメールアドレス、デフォルトは "";デフォルトは "1.0.0";
automatic: ロード後に自動的に実行を開始するかどうか、デフォルトは true;
description: プラグインの説明、デフォルトは "";
IPlugin インターフェースメソッドの説明: - init: プラグインの初期化;
getPluginContext: プラグイン環境コンテキスト オブジェクトを返します。
isInited: プラグインが初期化されているかどうかを返します。 ;
startup : プラグインを開始します。
shutdown : プラグインを停止します。
プラグイン フレームワークは、 IPlugin インターフェース。直接継承することをお勧めします。 サンプルコード:
@Plugin public class DemoPlugin extends AbstractPlugin { // 根据需要重写父类方法... }
プラグインの使用例
// 定义一个业务接口 public interface IBusiness { void sayHi(); } @Plugin(id = "demo_plugin", name = "DemoPlugin", author = "有理想的鱼", email = "suninformaiton#163.com", version = "1.0") public class DemoPlugin extends AbstractPlugin implements IBusiness { @Override public void startup() throws Exception { super.startup(); // System.out.println("started."); } @Override public void shutdown() throws Exception { super.shutdown(); // System.out.println("shutdown."); } public void sayHi() { System.out.println("Hi, from Plugin."); } }
public static void main(String[] args) throws Exception {
YMP.get().init();
try {
DemoPlugin _plugin = (DemoPlugin) Plugins.get().getPluginFactory().getPlugin("demo_plugin");
// 或者
// _plugin = Plugins.get().getPluginFactory().getPlugin(DemoPlugin.class);
//
_plugin.sayHi();
//
IBusiness _business = Plugins.get().getPluginFactory().getPlugin(IBusiness.class);
_business.sayHi();
} finally {
YMP.get().destroy();
}
}
注:同じプラグインで複数のビジネス インターフェイスを実装できます。複数のプラグインが同じビジネス インターフェイスを実装している場合、プラグインのロード順序に従って、最後にロードされたプラグイン インスタンスが前者を置き換えます。