技术开发 频道

Web Service实现SOA的关注点分离

    业务逻辑实现和配置

    我们的讨论将从解释业务逻辑类的实现和配置开始,因为他们是最简单的。AccountMgr接口和AccountMgrImpl类的源代码参见参考资料。从源代码中可以发现,事实上实现并没有做任何事情,所以可以保持其简单,因为本文并不是关于如何编写转移资金代码的文章。

    下面是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。

 

    <beans>

    
<bean id="accountMgrTarget"

    
class="com.mybank.bizlogic.AccountMgrImpl"/>

    . . .

    
<bean id="accountMgr"

    
class="org.springframework.aop.framework.

    ProxyFactoryBean
">

    
<property name="proxyInterfaces">

    
<list>

    
<value>

    com.mybank.bizlogic.AccountMgr

    
</value>

    
</list>

    
</property>

    
<property name="interceptorNames">

    
<list>

    
<value>

    securityInterceptor

    
</value>

    
</list>

    
</property>

    
<property name="target">

    
<ref bean="accountMgrTarget"/>

    
</property>

    
</bean>

    . . .

    
</beans>
0
相关文章