擴充套件點記錄

2021-06-19 10:23:08 字數 3246 閱讀 5098

/**

* 擴充套件點處理器介面,各種擴充套件點的初始處理由實現該介面的特定處理器實現。

* 在處理擴充套件點使用配置資訊時,提供靈活的應對機制,iprocesssource代表

* 處理源,對於處理源的處理分為兩種情況:

*/public inte***ce iextensionprocessor

public abstract class abstractextensionprocessor implements iextensionprocessor

public class webserviceprocessor extends abstractextensionprocessor implements iextensionprocessor

/*** 解析配置web service的extension,發布web service

*/public void process(iprocesssource processsource) throws extensionexception

//ipluginmodule module = processsource.getpluginmodule();

classloader loader = module.getpluginloader();

webservicemanager servicemanager = servicefactory.getservice(webservicemanager.class);

try

}} catch (exception e)

}public void release(ipluginmodule module) throws extensionexception }

/*** 外掛程式執行器介面

*/public inte***ce ipluginactuator

*** 擴充套件點執行器,維護擴充套件點的的生命週期,如workbench應用啟動時 載入擴充套件點資源和workbench應用關閉時的銷毀擴充套件點資源。

*/public class extensionactuator implements ipluginactuator

public void start(ipluginmodule module) throws actuatorexception

try catch (exception e) }

public void stop(ipluginmodule module) throws actuatorexception finally }}

} extensioncontext extensioncontext = extensioncontext.getinstance();

if (extensioncontext != null)

processors = null;}

/*** 將對應擴充套件點的擴充套件點配置集合分類

*/protected void proces***tensions(ipluginmodule module, document doc, mapcache) throws extensionloadexception

nodelist extensions = null;

try catch (xpathexpressionexception e)

for (int i = 0, size = extensions == null ? 0 : extensions.getlength(); i < size; i++)

ps.addnode(extension);}}

} protected void proces***tensionpoints(ipluginmodule module, document doc, mapelements) throws actuatorexception

nodelist extensionpoints = null;

try catch (xpathexpressionexception e)

for (int i = 0, size = extensionpoints == null ? 0 : extensionpoints.getlength(); i < size; i++) else if (id != null && processor != null) catch (exception e)

iprocesssource ps = elements.get(id);

if (ps == null) else

extproc.process(ps);

// 只有正常完成載入的擴充套件點才會被快取

processors.put(module.getpluginname(), new processorinfo(id, extproc));

logger.info(string.format("extension-[%s] process finish", id));}}

} private static class processorinfo

public string getid()

public iextensionprocessor getprocessor() }

private static class emptyprocesssource implements iprocesssource

public ipluginmodule getpluginmodule()

public void setname(string name)

public string getname()

public collectiongetprocessnodes() }}

/*** 該類負責啟動和停止外掛程式的啟用器ipluginactivator

* @author administrator**/

public class activateactuator implements ipluginactuator

/*** 啟動外掛程式的啟用器,呼叫外掛程式的配置的ipluginactivator的實現

*/public void start(ipluginmodule module) throws actuatorexception

try catch (exception e) }

public void stop(ipluginmodule module) throws actuatorexception

try catch (exception e) }

// do nothing

}}

swift學習記錄(擴充套件)

擴充套件就是向乙個已有的類 結構體 列舉型別或者協議型別新增新功能。基本 語法 使用關鍵字extension來宣告乙個擴充套件 extension 型別名 擴充套件可以 1 新增計算性屬性 和 靜態計算性屬性 extension double var m double var cm double v...

EF Core擴充套件工具記錄

microsoft.entityframeworkcore 的乙個外掛程式,支援自動記錄資料更改歷史記錄。github 儲存庫 microsoft.entityframeworkcore 的 dynamic linq 擴充套件,新增了非同步支援 github 儲存庫 二級快取庫。二級快取是乙個查詢快...

技術點記錄

spring cloud spring cloud 是一套完整的微服務解決方案,基於 spring boot 框架,準確的說,它不是乙個框架,而是乙個大的容器,它將市面上較好的微服務框架整合進來,從而簡化了開發者的 量。相關資料 rocketmq rocketmq是乙個訊息中介軟體。訊息中介軟體中有...