Spring事务的传播机制有七种:REQUIRED、REQUIRES_NEW、NESTED、SUPPORTS、NOT_SUPPORTED、MANDATORY和NEVER。
如下图所示:
1.Propagation.REQUIRED
默认的事务传播级别,它表示如果当前存在事务,则加入该事务,如果当前没有事务,则创建一个新的事务。
2.Propagation.SUPPORTS
支持当前事务,如果当前没有事务,就以非事务方式执行。
3.Propagation.MANDATORY
强制事务执行,若当前不存在事务,则抛出异常。
4.Propagation.REQUIRES_NEW
表示创建一个新的事务,如果当前存在事务,则把当前事务挂起。
也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰。
5.Propagation.NOT_SUPPORTED
以非事务方式运行,如果当前存在事务,则把当前事务挂起。
6.Propagation.NEVER
以非事务方式运行,如果当前存在事务,则抛出异常。
7.Propagation.NESTED
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》