Spring事务传播行为-编程式事务

本文详细介绍了Spring的编程式事务管理,通过TransactionTemplate实现事务操作。讲解了TransactionOperations接口及其默认实现,以及如何在实际代码中应用编程式事务。特别地,文章通过举例说明了Propagation.REQUIRED和Propagation.REQUIRES_NEW两种事务传播行为的区别,分析了它们在并发场景下可能导致的死锁问题。
摘要由CSDN通过智能技术生成

1、 编程式事务

Spring 事务管理有两种方式:

编程式事务:通过编码方式实现事务;

声明式事务:基于AOP实现,如 @Transactional 声明式注解。

2、 实现原理

编程式事务基于TransactionTemplate实现,TransactionTemplate继承TransactionOperations接口

TransactionOperations提供有返回结果执行事务操作和无返回结果执行事务操作

TransactionOperations 默认实现 executeWithoutResult 方法

public interface TransactionOperations {
	
	@Nullable
	<T> T execute(TransactionCallback<T> action) throws TransactionException;

	
	default void executeWithoutResult(Consumer<TransactionStatus> action) throws TransactionException {
		execute(status -> {
			action.accept(status);
			return null;
		});
	}

}

TransactionTemplate 实现 execute 方法

public class TransactionTemplate extends DefaultTransa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值