关于Spring配置事务传播属性时的一个小技巧

本文介绍了一种在Spring框架中配置事务的推荐方法,通过详细示例展示了如何为不同的业务方法(如查询、加载和更新操作)指定合适的事务传播级别及只读属性,以提高系统的稳定性和性能。

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

我见网上、书上好多是这样写的,当然这种写法不会有错

<!-- 事务传播特性 -->

	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="delete*" propagation="REQUIRED" rollback-for="Throwable"/>
			<tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable"/>
			<tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/>
			<tx:method name="get*" read-only="true" />
			<tx:method name="load*" read-only="true" />
			<tx:method name="find*" read-only="true" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

这样会有一个小问题,相对update来说,find总是很好命名的,而update又不一定仅限于add,update,delete,所以此时你就得改配置文件了


这是我推荐的一种写法

    <!-- 定义一个事务通知txAdvice,配置事务的传播特性 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" propagation="NOT_SUPPORTED" read-only="true"/>
			<tx:method name="load*" propagation="NOT_SUPPORTED" read-only="true"/>
			<tx:method name="get*" propagation="NOT_SUPPORTED" read-only="true"/>
			<tx:method name="is*" propagation="NOT_SUPPORTED" read-only="true"/>
			<!-- 设置所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->
			<tx:method name="*" propagation="REQUIRED"/>
		</tx:attributes>
	</tx:advice>




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值