快速业务通道

在SPRING中实现事务暂停的方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

在SPRING中实现事务暂停的方法

时间:2011-04-23

摘要

Spring框架是一个流行的基于轻量级控制反转容器的Java/J2EE应用框架,尤其在数据访问和事务管理方面的能力是众所周知的。Spring的声明性事务分离可以应用到任何POJO目标对象,并且包含所有EJB基于容器管理事务中的已声明事务。后台的事务管理器支持简单的基于JDBC的事务和全功能的基于JTA的J2EE事务。

这篇文章详细的讨论了Spring的事务管理特性。重点是如何在使用JTA作为后台事务策略的基础上让POJO利用Spring的声明性事务,这也显示了Spring的事务服务可以无缝地与J2EE服务器(如BEA WebLogic Server的事务协调器)的事务协调器进行交互,作为EJB CMT传统事务分离方式的一个替代者。POJO的声明性事务作为Spring声明性事务分离方式的样例,让我们来看一下Spring的样例应用PetClinic的中心服务外观中的配置:

清单1:

<bean id="dataSource"   class="org.springframework.jndi.JndiObjectFactoryBean">    <property name="jndiName">      <value>java:comp/env/jdbc/petclinic</value>    </property> </bean> <bean id="transactionManager"   class="org.springframework.transaction.jta.JtaTransactionManager"/> <bean id="clinicTarget"   class="org.springframework.samples.petclinic.jdbc.JdbcClinic">    <property name="dataSource"><ref bean="dataSource"/></property> </bean> <bean id="clinic"   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">    <property name="transactionManager"><ref bean="transactionManager"/></property>    <property name="target"><ref bean="clinicTarget"/></property>    <property name="transactionAttributes">      <props>        <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>        <prop key="store*">PROPAGATION_REQUIRED</prop>      </props>    </property> </bean>

他遵循Spring的标准XMLBean定义格式。定义了:

1、一个DataSource引用,指向一个JNDI位置—在J2EE服务器管理下这将从JNDI环境中获取特定的DataSource。

2、一个应用服务实现—这是一个POJO,封装了业务和数据访问逻辑。在这里实现了应用中的Clinic服务接口。

3、一个应用服务的事务代理—这个代理为目标服务定义了事务属性,匹配特定的方法名模式并为之创建相应的事务。在实际的事务管理中,代理指向一个PlatformTransactionManager实现。注意:除了显式的代理定义,Spring还支持自动代理机制和通过Commons Attributes或J2SE 5.0注解实现源程序级的元数据使用。

这些可选方法的讨论超过了本文的范围。可以参考Spring的文档来了解相关细节。业务接口和业务实现是特定于应用的并且不需要关心Spring或者Spring的事务管理。普通Java对象可以作为服务的目标对象,而且任何普通Java接口可以作为服务的接口。

在SPRING中实现事务暂停的方法(2)

时间:2011-04-23

下面是一个Clinic接口的示例:

清单2:

public interface Clinic {    Pet loadPet(int id);    void storePet(Pet pet);    ... }

这个接口的实现如下显示

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号