TransactionProxyFactoryBean用继承简化配置
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
最常用的一种:
PROPAGATION_REQUIRED | 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 |
TransactionProxyFactoryBean用继承简化配置
<!-- 定义事务管理器- 数据源的事务管理对象-->
<bean id="transactionManagerFbth"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<propertyname="dataSource">
<reflocal="dataSource.FBCM"/>
</property>
</bean><!-- 配置事务模板,模板bean被设置成abstract bean,保证不会被初始化-->
<beanid="baseProxy"
abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><!-- 为事务模板注入事务管理器-->
<property name="transactionManager">
<refbean="transactionManagerFbth"/>
</property><!-- 设置事务属性-->
<propertyname="transactionAttributes">
<props>
<propkey="save*">PROPAGATION_REQUIRED,-Throwable</prop>
<propkey="remove*">PROPAGATION_REQUIRED,-Throwable</prop>
<propkey="merge">PROPAGATION_REQUIRED,-Throwable</prop>
<propkey="update">PROPAGATION_REQUIRED,-Throwable</prop>
<propkey="do*">PROPAGATION_REQUIRED,-Throwable</prop>
</props>
</property>
</bean><!-- 实际的事务代理bean-->
<bean id="testServer"
parent="baseProxy">
<property name="target"><!-- 采用嵌套bean配置目标bean -->
<beanclass="com.nstc.fbth.server.impl.TestServerImpl"
parent="baseServer"/>
</property>
</bean>