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

相关推荐
雨中飘荡的记忆35 分钟前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌3 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊4 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解6 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing10 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean10 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven9711 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55121 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java