「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」
常用的事务传播类型:
常用的7种事务传播机制类型,但是在日常工作中经常使用的只有REQUIRED,NOT_SUPPORTTED,REQUIRES_NEW.
spring常用事务传播类型使用场景:
| Spring 事务传播类型 | 使用场景 |
|---|---|
| REQUIRED | spring中默认的传播机制,适用于大部分场景 |
| NOT_SUPPORTED | 适用于发送提示信息,站内信,短信,邮件,这类场景要求不影响系统的主体的业务逻辑,即使操作失败也不应该对主体逻辑产生影响,不能使主体逻辑的事务回滚 |
| REQUIRES_NEW | 总是创建新的事务执行,适用于不受外层方法事务影响的场景,例如记录日志的操作,不管主体业务逻辑是否已经完成,日志都要记录下来,不能因为主体业务逻辑异常事务回滚而导致日志操作回滚 |
2.REQUIRES_NEW 事务传播类型
如果当前存在事务,则把当前事务挂起,并重新创新新的事务并执行,直到新的事务提交或者回滚,才会恢复执行原来的事务,这种事务传播类型具有隔离性,将原有事务和新创建的事务隔离,原有事务和新创建的事务的提交和回滚互不影响。新创建的事务和被挂起的事务没有任何关系, 它们是两个不想干的独立事务,
外部事务执行失败后回滚,不会回滚内部事务的执行结果。内部事务执行失败抛出异常,被外部事务捕捉到时, 外部事务可以不处理内部事务的回滚操作。
REQUIRES_NEW (TransactionDefinition.PROPAGATION_REQUIRES_NEW)
测试代码:
@Transactional(propagation=Propagation.REQUIRES_NEW)
方法
spring的事务,开始利用自己事务的固定特点,开始着重于固定的事务类型和传播机制进行数据化的处理。
通常是用三种来展示REQUIRED,NOT_SUPPORTTED,REQUIRES_NEW
默认就是REQUIRED,没有就创建,有就加入事务