天天看點

BaseSPIManager元件介紹

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的代理執行個體。