/**
* 擴充套件點處理器介面,各種擴充套件點的初始處理由實現該介面的特定處理器實現。
* 在處理擴充套件點使用配置資訊時,提供靈活的應對機制,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是乙個訊息中介軟體。訊息中介軟體中有...