spring事务传播

@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()方法有单独写的数据库增删改操作,则根本不在一个事务里,外部大事务失败,它内部不受影响。

多线程中的事务,可能也不是同一事务

 

posted on 2015-11-03 10:49  教父归来  阅读(127)  评论(0)    收藏  举报