W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
通過在一個實(shí)現(xiàn)了IPlugin接口的類上聲明@Plugin
注解來創(chuàng)建插件啟動類,其將被插件工廠加載和管理,一個插件包可以包括多個插件啟動類,每個插件啟動類可以實(shí)現(xiàn)自己的業(yè)務(wù)接口對外提供服務(wù);
@Plugin
注解參數(shù)說明:
id:插件唯一ID,若未填寫則使用初始化類名稱進(jìn)行MD5加密后的值做為ID;
name:插件名稱,默認(rèn)為"";
alias:插件別名,默認(rèn)為"";
author:插件作者,默認(rèn)為"";
email:聯(lián)系郵箱,默認(rèn)為"";
version:插件版本,默認(rèn)為"1.0.0";
automatic:是否加載后自動啟動運(yùn)行,默認(rèn)true;
description:插件描述,默認(rèn)為"";
IPlugin接口方法說明:
init:插件初始化;
getPluginContext:返回插件環(huán)境上下文對象;
isInited:返回插件是否已初始化;
isStarted:返回插件是否已啟動;
startup:啟動插件;
shutdown:停止插件;
destroy:銷毀插件對象;
插件框架提供了一個封裝了IPlugin接口的AbstractPlugin抽象類,建議直接繼承,示例代碼:
@Plugin public class DemoPlugin extends AbstractPlugin { // 根據(jù)需要重寫父類方法... }
結(jié)合業(yè)務(wù)接口的插件示例:
// 定義一個業(yè)務(wù)接口 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."); } }
上面我們已經(jīng)創(chuàng)建了一個DemoPlugin插件并且實(shí)現(xiàn)了IBusiness業(yè)務(wù)接口,下面介紹如何使用插件和調(diào)用業(yè)務(wù)接口方法:
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(); } }
執(zhí)行結(jié)果:
Hi, from Plugin. Hi, from Plugin. shutdown.
注:同一個插件可以實(shí)現(xiàn)多個業(yè)務(wù)接口,若多個插件實(shí)現(xiàn)同一個業(yè)務(wù)接口,根據(jù)插件加載順序,最后加載的插件實(shí)例對象將替換前者;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: