由于您已经成功实施spring transaction
,
我们可以通过Spring
三种方式实现事务:
- 平台交易管理。
- 声明式事务管理。
- 程序化事务管理。
您实现的称为通过 XML 的声明式事务管理。
简而言之,您transaction
通过 Spring 的AOP功能实现了。
将tx:advice XML
配置与基于 XML 的 AOP 配置结合起来可以实现协同组合。例如,我们可以使用方法名称来自动确定我们想要在该方法上应用哪种事务。
假设我们要将事务应用于所有以 and 开头的方法save
,modify
例如savePizza()
, saveColdDrink()
, modifyOrder()
, modifyBill()
。对于这些,我们必须advice
在我们的 xml 文件中定义:
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
我们的建议已经准备就绪,正如我们在上面所说的那样,我们只希望在以save
or开头的方法上进行事务modify
。现在我们将通过使用pointcut
element of来说明哪些 bean 需要上述建议aop-config
。例如,假设我们想将事务通知应用到com.mytransaction.service
包内所有可用的类。
为此,我们必须在 xml 文件中添加以下行:
<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>
简而言之,<tx:advice>
意思是我们要做什么或我们想要应用的交易行为。
pointcut
里面的元素<aop-config>
说我们要在哪里应用交易,比如说<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>