从英文命名理解Spring事务传播机制@Transactional解释
事务传播机制
验证demo
序号 | 事务传播策略 | 英文释义 | 策略解析 |
1 | MANDATORY | 强制的,非有不可的,强制性规定的 | 也就是规定被注解的方法被调用之前,强烈地要求执行线程中必须已经存在事务,如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(最要求事务) |
2 | REQUIRED | 需要的,必备的 | 被注解方法需要被一个事务包裹,如果当前存在事务,则直接使用,加入该事务;如果当前没有事务,则创建一个新的事务并加入。 |
3 | SUPPORTS | 支持的,拥护的,但不是强制的 | 因为不是强制的要求事务的,所以如果主动调用的方法存在事务,则当前被调用的SUPPORTS就加入已经存在的事务;如果当前没有事务,则以非事务的方式继续执行,这种行为就表达了对事物的支持性,SUPPORTS就像一块铁钉,有磁铁(事务)就被磁铁(吸引),没有就是清清白白干干净净的铁钉。 |
4 | REQUIRES_NEW | 需要的,且需要一个新的 | 需要事务,且还需要一个全新的事务,这比REQUIRED对事务的要求更高,无论当前是否存在事务,都创建一个新的事务,并挂起当前事务(如果存在的话)。 |
5 | NOT_SUPPORTED | 不支持,支持的反义词,甚至有反抗的意味 | 不支持事务,且抵触事务,会强烈地以非事务的方式执行操作,如果存在的话甚至会挂起当前事务。 |
6 | NEVER | 从不,反抗意味的巅峰 | 最反抗事务的一个等级,以非事务的方式执行,如果当前存在事务,则抛出异常。(最反抗事务) |
7 | NESTED | 嵌套的 | 如果当前存在事务,则执行一个嵌套事务;如果当前没有事务,则执行与REQUIRED相同的行为。嵌套的就多了一层独立的味道在里边,说明有一定的隔离性。隔离在于:如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交 |