bboss 項目下載下傳位址: https://sourceforge.net/project/showfiles.php?group_id=238653
在bboss aop架構中,我們将業務元件配置到xml檔案中(關于配置的文法請參考《bboss aop配置文法》),比如manager-provider.xml,然後就可以通過元件BaseSPIManager來擷取這些業務元件的執行個體。除了對業務元件進行管理,bboss aop架構還提供了系統全局屬性配置的功能,這些屬性同樣可以通過BaseSPIManager提供的相關接口來擷取。下面分三個部分說明上述的功能。
BaseSPIManager介紹
BaseSPIManager管理業務元件
BaseSPIManager管理系統配置屬性
包路徑說明
BaseSPIManager的完整包路徑如下:
com.chinacreator.spi.BaseSPIManager
管理業務元件的兩個靜态接口
l 接口1 擷取id為managerid的管理服務接口執行個體(如果有多個provider,則擷取第一個provider實作)
public static Object getProvider(String providerManagerType) throws SPIException
l 接口2 擷取id為managerid的管理服務接口執行個體,參數二對應多個provider中相應的provider 類型辨別
public static Object getProvider(String providerManagerType, String sourceType) throws SPIException
方法1和方法2的差別是:方法1的傳回值和抛出的異常以預設(或者多個中的第一個provider)的provider的相應方法的傳回值和異常為準,方法2傳回值和抛出的異常以指定類型的provider的相應方法的傳回值和異常為準。方法1和方法2的事務管理機制是一緻和相同的。
這兩個接口傳回的對象類型為java.lang.Object,調用程式可以将該對象轉型為相應的元件接口類型。
舉例說明如下:
配置檔案
<manager id="managerid " //管理服務id
singlable="true" //單列模式
>
<provider type="provider_a" //provider實作a
class="test.A" />
<provider type="provider_b" //provider實作b
class="test.B" />
<transactions>
<method name="handle" txtype="REQUIRED_TRANSACTION"/>
</transactions>
</manager>
擷取執行個體
AI a = (AI)BaseSPIManager.getProvider("managerid");
a将是test.A的代理執行個體。因為預設擷取第一個provider實作。
AI a = (AI)BaseSPIManager.getProvider("managerid",”provider_b”);
A将是test.B的代理執行個體。