首先我需要说明的是,方法A调用了方法B,方法B上加了事务注解,方法A是不知道加了没有 ,我们接下来传播级别是站在方法B角度上说的
- required级别:
方法B:如果A没有事务,我方法B启动一个自己的事务。如果方法A有事务,我方法B加入方法A的事务中
- required_new级别:
方法B:如果A没有事务,我方法B启动一个自己的事务。如果方法A有事务,就将A挂起,然后开启我自己的我事务。
明显缺点:容易引发死锁,比如方法A是增加一条库存,方法B是减少一条库存。方法A执行方法B的时候会有问题,方法B在等方法A释放数据库锁,方法A在等方法B执行完
- 其他级别:
比如无论A有没有事务方法B都开启事务,还有嵌套事务,这些没有用过不过多讨论