下面是Spring配置文件的部分代碼(可在參考資料部分得到整個配置文件),這些代碼表明了如何配置業務邏輯的Spring beans,以便使用Spring的AOP工具。第一個bean條目是為AccountMgrImpl類創建bean。第二個bean條目是如何施展前面討論的全部AOP代理魔法。使用從ProxyFactoryBean獲取的id accountMgr來創建bean。當FundsTransferServiceSoapBindingImpl類向Spring請求具有該id的bean時,ProxyFactoryBean將返回AOP代理對象的實例。對它進行配置來實現AccountMgr接口,這樣客戶端程序會認為他們只是在使用業務邏輯對象。使用名為interceptorNames的第二個屬性,創建名為securityInterceptor的bean(稍后將進行解釋),可以偵聽方法調用以執行安全檢查。這允許我們在業務邏輯代碼中插入不帶任何依賴性的Acegi安全機制。最后,將目標設置到accountMgrTarget bean,這樣方法調用將最終傳送到實際的業務邏輯類AccountMgrImpl。
class="com.mybank.bizlogic.AccountMgrImpl"/>
. . .
class="org.springframework.aop.framework.
ProxyFactoryBean">
com.mybank.bizlogic.AccountMgr
securityInterceptor
. . .
Web service實現和配置
FundsTransferServiceSoapBindingImpl類是Web service實現。其源代碼請參見參考資料部分。該類的框架由Axis生成,我們僅僅填寫方法來提供實現。請注意該類擴展了ServletEndpointSupport。這是Spring提供的便利類,可以用于JAX-RPC Web service實現,來獲取Spring應用程序上下文的引用。通過擴展該類,FundsTransferServiceSoapBindingImpl類可以訪問Spring上下文,來獲取先前所描述的accountMgr bean的引用。由于FundsTransferServiceSoapBindingImpl類由Axis管理,我們無法使用Spring的依賴性注入工具來自動獲取該bean的引用。因此,必須在onInit()方法中明確執行。不幸的是,這會將該類中的
一些依賴性添加到特定于Spring的類中。好,這就是使用Spring和Acegi在得到受益的同時需要付出的小小代價。請注意在實際的方法transferFunds()中,代碼僅委派給accountMgr bean。
在Axis配置文件(deploy.wsdd和server-config.wsdd)中,需要確保將服務的實現類設置為該類FundsTransferServiceSoapBindingImpl,而不是由Axis生成的其他框架類(FundsTransferServiceSoapBindingSkeleton)。若要使Spring在與Axis相同的web應用程序中正確地工作,我們需要將下面的條目添加到web.xml文件中。context-param條目指定了放置Spring配置文件的位置。listener條目的設置用于在啟動時載入Spring配置和上下文。
文章來源于領測軟件測試網 http://www.kjueaiud.com/