声明式事务(XML)【理解】【重点】

本文介绍如何利用Spring的AOP特性实现声明式事务管理,包括配置tx命名空间、定义事务管理通知、设置AOP切面等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路分析:将编程式事务中的通用代码抽取出来,制作成独立的around通知使用AOP工作原理,将事务管理的代码动态织入到原始方法中。由于该功能使用量较大,Spring已经将该通知制作完毕。

1.开启tx命名空间

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

">

2.定义Spring提供的事务管理通知

<!-- 事务管理Advice,由Spring提供 -->

<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>

<tx:method name="transfer"/>

</tx:attributes>

</tx:advice>

注意:TxAdvice需要为其指定一个事务管理器的Bean

<!-- 声明事务管理器的Bean,该Bean依赖数据源对象 -->

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property>

</bean>

3.设置AOP

<aop:config>

<aop:advisor advice-ref="txAdvice" pointcut="execution(void *..*.*.trans*(..))"/>

</aop:config>

4.将原始编程式事务控制中的控制代码删除

5.advice的参数

tx:advice:定义事务管理的通知(环绕通知)

transaction-manager:声明事务管理的实现类

tx:method:定义参与事务管理的方法

7.事务传播行为 配置的是事务协调员(事务加入者)针对事务管理员(事务发起者)所携带的事务的处理态度 事务管理者(业务) 事务协调员(数据) REQUIRED T1 T1 无 T2 REQUIRES_NEW T1 T2 无 T1 SUPPORTS NOT_SUPPORTED MANDATORY NEVER NESTED T1 无 T1 无 T1 无 T1 无 savePoint()

T1 无 无 无 T1 错误 错误 OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值