同一个类中,对于@Transactional注解的方法调用,事务传播行为不会生效

java 复制代码
	
	@Service  
	public class MyService {  
	  
	    @Transactional  
	    public void methodA() {  
	        // some database operations  
	        methodB();  
	    }  
	  
	    @Transactional(propagation = Propagation.REQUIRES_NEW)  
	    public void methodB() {  
	        // some other database operations  
	    }  
	}

这里,即使methodB上标注了@Transactional并要求新的事务Propagation.REQUIRES_NEW

但是,当methodA内部调用methodB时,

这个事务传播行为不会生效,

因为,methodA内部调用methodB是直接的Java方法调用,不会经过Spring的代理。

说白了就是,

methodAmethodB 默认情况下是在同一个事务中的,

因为 methodB 是从 methodA 内部直接调用的,不经过Spring的事务代理,

由于这种直接调用绕过了代理,methodB 上的 @Transactional 注解不会生效,

因此 methodAmethodB 的操作都会在同一个事务中执行。

相关推荐
HoneyMoose7 小时前
Jenkins Cloudflare 部署提示错误
java·servlet·jenkins
阿丰资源7 小时前
基于SpringBoot的物流信息管理系统设计与实现(附资料)
java·spring boot·后端
Predestination王瀞潞8 小时前
Java EE3-我独自整合(第四章:Spring bean标签的常见配置)
java·spring·java-ee
overmind8 小时前
oeasy Python 121[专业选修]列表_多维列表运算_列表相加_列表相乘
java·windows·python
资深数据库专家8 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
房开民8 小时前
可变参数模板
java·开发语言·算法
t***5448 小时前
如何在现代C++中更有效地应用这些模式
java·开发语言·c++
_深海凉_8 小时前
LeetCode热题100-最小栈
java·数据结构·leetcode
不知名的忻8 小时前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历
daidaidaiyu8 小时前
一文学习入门 ThingsBoard 开源物联网平台
java·mqtt·spring