摘要
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>
新聞熱點
疑難解答