Spring传播行为

本文详细介绍了Spring的七大事务传播行为,包括REQUIRED、SUPPORTS、MANDATORY、REQUIRED_NEW、NOT_SUPPORTED、NEVER和NESTED。通过示例代码演示了它们在实际操作中的效果,帮助理解各种传播行为如何影响事务的开启、回滚和嵌套。
摘要由CSDN通过智能技术生成

###Spring事务的传播行为

当方法存在事务,然后调用其他方法的时候事务是怎么传播的,spring提供了七种传播行为,每次看过几天后就忘记了,这一次进行整理记录一下,不然每次寻找资料很麻烦。

Spring有七大传播行为如下图所示,光看以下描述可能不是很好理解,遇见自己无法理解的东西最好的办法就是自己通过代码去实践探索。
Spring传播行为.png

####REQUIRED

spring中默认的传播行为,如果拥有事务的A方法调用拥有事务的B方法,B方法将会在A方法的事务中运行,如果A方法没有事务,将会运行在B方法的事务中。下面将以用户购买商品进行事务的探索:

/**
 *两个entity类
*/
public class People { //用户类
    @Id
    Integer id;
    int price; //拥有的钱财
}
public class Product { //物品类
    @Id
    Integer id; //id
    int price; //价格
    int count; //库存
}
/**
*数据库表
*/
create table product(
	id BIGINT PRIMARY KEY,
	price int,
	count int
)

create table people(
	id BIGINT PRIMARY KEY,
	price int unsigned  //加上unsigned代表price的值必须大于等于0
)

数据库中的数据 people表
people.png
product表
product.png

下面是service中购买商品的代码

@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    ProductMapper productMapper;
    @Autowired
    PeopleMapper peopleMapper;

    @Override
    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
    public void buyOne(Integer productId) {
        System.out.println(TransactionSynchronizationManager.getCurrentTransactionName
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值