一、用事务通知声明式地管理事务
spring 2.x 提供了一个事务通知,你能用tx Schema中定义的<tx:advice>元素轻松的对它进行配置。
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 以AspectJ方式 定义 AOP -->
<aop:config>
<aop:pointcut id="yyManagerOperations" expression="execution(* com.xx.yy..*Manager.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="yyManagerOperations" />
</aop:config>
<!-- 相当于创建了一个 TransactionIntercepter 事务环绕通知 -->
<!-- 基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置.
默认的设置请参考Spring文档事务一章. -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"
propagation="REQUIRED" />
<tx:method name="find*" read-only="true"
propagation="REQUIRED" />
<tx:method name="query*" read-only="true"
propagation="REQUIRED" />
<tx:method name="show*" read-only="true"
propagation="REQUIRED" />
<tx:method name="list*" read-only="true"
propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED"
rollback-for="com.xx.core.exception.BusinessException" />
</tx:attributes>
</tx:advice>