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

相关推荐
Z3r4y19 小时前
【代码审计】RuoYi-4.7.3&4.7.8 定时任务RCE 漏洞分析
java·web安全·ruoyi·代码审计
Kuo-Teng20 小时前
LeetCode 160: Intersection of Two Linked Lists
java·算法·leetcode·职场和发展
Jooou20 小时前
Spring事务实现原理深度解析:从源码到架构全面剖析
java·spring·架构·事务
盖世英雄酱5813621 小时前
commit 成功为什么数据只更新了部分?
java·数据库·后端
码上淘金1 天前
在 YAML 中如何将 JSON 对象作为字符串整体赋值?——兼谈 Go Template 中的 fromJson 使用
java·golang·json
刘一说1 天前
Spring Boot 应用的指标收集与监控体系构建指南
java·spring boot·后端
老友@1 天前
Java Excel 导出:EasyExcel 使用详解
java·开发语言·excel·easyexcel·excel导出
Full Stack Developme1 天前
java.net.http 包详解
java·http·.net
daidaidaiyu1 天前
Spring BeanPostProcessor接口
java·spring