spring声明式事务

spring的声明式事务让程序员不在业务层用硬编码的方式进行事务控制,大大简化了编码难度,代码调整方便。spring的声明式事务基于AOP实现,在配置文件中即可完成,需要使用tx、aop、两个命名空间下的标签完成。

配置事务管理器

需要配置一个事务管理器,通过它来完成对事务处理的全面支持和统一管理,
在切面中相当于增强处理类,这里使用DataSourceTransactionManager来实现。

<!-- 省略数据源、SqlSessionFactoryBean、DAO 及业务Bean的配置-->
<!-- 定义事务管理器,注入配置好的数据源-->
<bean id="txManager" class="org.springframework.jdbc.dataSource" ref="dataSource"></bean>

使用<tx:advice>标签配置事务增强

<tx:advice id="txAdvice" transaction-manager="txManager">
	<!-- 定义属性,声明事务规则 -->
	<tx:attributes>
		<tx:method name="find*" propagation="SUPPORTS"/>
		<tx:method name="add*" propogation="REQUIRED"/>
		<tx:method name="del*" propogation="REQUIRED"/>
		<tx:method name="update*" propogation="REQUIRED"/>
		<tx:method name="*" propogation="REQUIRED"/>
	</tx:attributes>
</tx:advice>

<tx:advice>标签可以设置transaction-manager属性引用一个事务管理器Bean。

transaction-manager属性的默认值是transactionManager。
如果事务管理Bean的id是这个的话可以不指定该属性。

<tx:attributes>子标签定义事务属性,事务属性通过<tx:method>标签进行设置,可以为不同的方法设置不同的事务属性。其中name属性用于指定匹配的方法,可以使用通配符(*)。

定义切面

<!-- 定义切面 -->
<aop:config>
	<!-- 定义切入点 -->
	<aop:point id="serviceMethod" expression="execution(*cn.smbms.service..*(..))"/>
	<!-- 将事务增强与切入点组合 -->
	<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
</aop:config>

至此声明式事务已经配置在了service层的所有类的所有方法上。

在这里保存一篇很详细、很有参考价值的文章:https://blog.csdn.net/zht741322694/article/details/78676964

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值