spring中@Transactional注解的传播机制简介说明

戚薇 Spring 发布时间:2023-04-13 22:56:34 阅读数:17137 1
下文笔者讲述Transactional注解的传播机制简介说明,如下所示

Transactional注解的传播机制简介

Transactional注解的传播机制指:
     当一个方法被其他方法调用
	    是继承其他方法的事务还是开启新事务,还是不参与事务的相关说明
     我们将这种操作称之为"Spring事务传播机制"

注意事项:
   两个事务方法之间应避免使用this调用
     如果的确为同一个类中调用,
	 应使用SpringContextUtils.getBean(XxxService.class)获取对象实例
	    然后再调用其中的方法

Spring事务传播机制的实现思路

Transactional注解后面加上(propagation参数值,即可实现不同的事务传播机制)
参数 备注
@Transactional(propagation = Propagation.REQUIRED) 如果当前不存在事务,子方法就自己开启事务。父方法如果有事务,它就跟随父方法的事务被包裹其中。总之 REQUIRED 就是必须运行在事务中
@Transactional(propagation = Propagation.SUPPORTS) 如果当前存在了事务,它就也被包裹运行在这个事务中。如果父方法没有开启事务,它就以无事务运行
@Transactional(propagation = Propagation.MANDATORY) 要求当前必须存在事务,否则这个子方法就抛出异常 IllegalTransactionStateException
@Transactional(propagation = Propagation.REQUIRES_NEW) 不管当前有没有事务,都不在那个事务中运行,自己一定会单独开启一个独立的事务运行
@Transactional(propagation = Propagation.NOT_SUPPORTED) 如果当前已经存在了事务,则会挂起这个事务。子方法它坚决不在事务中运行
@Transactional(propagation = Propagation.NEVER) 和 Propagation.MANDATORY 相反,子方法要求当前不能存在事务。否则它就抛出异常 IllegalTransactionStateException
@Transactional(propagation = Propagation.NESTED) 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与 PROPAGATION_REQUIRED 类似的操作
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202304/6238.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者