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

思路分析:将编程式事务中的通用代码抽取出来,制作成独立的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring中配置声明事务可以使用XML配置文件。下面是一个示例: 首先,在Spring配置文件中引入tx命名空间,如下所示: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 其他配置 --> </beans> ``` 接下来,为了启用声明事务,需要配置事务管理器和事务通知器。示例如下: ```xml <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 数据源配置 --> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置事务通知器 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <!-- 配置切面 --> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.example.service.*.*(..))" /> </aop:config> ``` 在这个示例中,我们配置了一个数据源、一个事务管理器和一个事务通知器。事务通知器定义了事务的传播行为为REQUIRED,这意味着如果当前没有事务,则创建一个新的事务;如果当前存在事务,则加入到当前事务中。 最后,通过使用aop:config配置切面,指定了需要应用事务的目标方法。在这个示例中,我们将事务应用到了`com.example.service`包下的所有方法。 请注意,这只是一个简单的示例,实际的配置可能会根据具体需求有所不同。你也可以通过注解方来配置声明事务,具体可以参考Spring官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值