@Transactioal
A()
@Transactional
B()
C()
如果A调用B,则A会把它的事务传播给B,它们在同一事务下运行,统一回滚。但如果B方法是require_new,则失败的话,B单独回滚,A不受影响。
如果A调用C,则spring会认为C就是A的代码,他们肯定在同一事务下运行,统一回滚。
但是,如果如下代码:
@Transactional
A(){
B b = new B();
b.xxMethod();
}
如果b.xxMethod()方法有单独写的数据库增删改操作,则根本不在一个事务里,外部大事务失败,它内部不受影响。
多线程中的事务,可能也不是同一事务
时间: 2024-10-18 12:36:06