(面试题)Spring事务的传播级别

151 阅读1分钟

首先我需要说明的是,方法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都开启事务,还有嵌套事务,这些没有用过不过多讨论