spring 事务传播

参考:https://zhuanlan.zhihu.com/p/148504094

spring 事务有七种传播机制:

  • reuqired :需要以事务运行,如果当前存在能在事务,则在当前事务运行,如果没有则自己开一个事务。
  • required_new :不管当前事务存不存在,都会新开一个事务,并且这个事务是独立的。也就是说,当前事务的回滚不会影响外部事务。
  • supports :当前存在事务,则加入当前事务,没有以非事务运行。
  • not_supported :始终以非事务方式执行,如果当前存在事务,则挂起当前事务。
  • mandatory :强制以事务执行,当前事务不存在则抛出异常。
  • never :不使用事务,如果当前存在事务,抛出异常。
  • nested :如果当前事务存在,则嵌套在该事务执行,调用方其实可以通过 catch 捕获被调用方的异常,那么当嵌套的子事务回滚时,父事务不会回滚。