Spring事务传播机制
大家都知道spring的有个很重要的概念就是事务,事务传播是如果a方法中调用了b方法,那么b方法是用a的事务呢还是单独开启另外的事务呢?
这就牵扯到了Spring的事务传播机制
Spring有7中事务传播机制,我一一给大家做个简单的介绍
REQUIRED
这是Spring默认的传播机制,如果a方法没有开启事务b就会自己新建一个事务,如果a开启了事务,b就会使用a的事务
REQUIRES_NEW
显然这时候b需要创建一个新的事务,如果a开启了事务,b会挂起当前的事务,不管a有没有事务,b都会使用新的事务
SUPPORTS
如果a开启了事务,b就用a的事务,如果a没有事务,b也不会新建事务,也会以非事务的方式运行
NOT_SUPPORTED
如果a开启了事务,b会把这个事务挂起,也就是说方法会以非事务的形式运行
NEVER
显然这个比NOT_SUPPORTED更加的强势,它会让a和b都不使用事务,如果存在事务的话就会抛出异常
NESTED
当a事务有的话,b会嵌套一个事务,当b出现异常的时候b会回滚,a不受影响,a回滚的话b也会回滚。也就是b不会影响a,a影响b
MANDATORY
MANDATORY是强制性的意思,a如果有事务,b就会和a共用同一个事务,如果a没有事务,b就抛出异常信息
总结
本篇主要介绍了spring的7中事务传播机制,默认是REQUIRED,理解它并在合适的场景下选择合适的事务传播机制。