同一个类中,对于@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 的操作都会在同一个事务中执行。

相关推荐
TH_17 分钟前
37、SQL的Explain
java·数据库·sql
康王有点困13 分钟前
Flink部署模式
java·大数据·flink
EndingCoder13 分钟前
属性和参数装饰器
java·linux·前端·ubuntu·typescript
芒克芒克27 分钟前
LeetCode 134. 加油站(O(n)时间+O(1)空间最优解)
java·算法·leetcode·职场和发展
huahailing102439 分钟前
Spring 循环依赖终极解决方案:从原理到实战(附避坑指南)
java·后端·spring
jiaguangqingpanda1 小时前
Day28-20260124
java·数据结构·算法
Java程序员威哥1 小时前
SpringBoot2.x与3.x自动配置注册差异深度解析:从原理到迁移实战
java·大数据·开发语言·hive·hadoop·spring boot·后端
cheems95271 小时前
【javaEE】文件IO
java
微露清风2 小时前
系统性学习Linux-第一讲-Linux基础指令
java·linux·学习
tqs_123452 小时前
tcc中的空回滚和悬挂问题
java·数据库