摘要: @Transactional失效的情况总结 前言 @Transactional失效是实际开发中非常容易踩的坑,本文结合实际项目经验总结了常见的失效场景和解决方案。 一、最常见的:同类内部调用(占80%的坑) 这是最容易犯的错误,也是开发中最常遇到的问题。 问题描述 比如说,我有一个UserServi 阅读全文
posted @ 2026-01-25 21:25 菜鸟~风 阅读(8) 评论(0) 推荐(0)
摘要: 一、Spring与数据库隔离级别对应表 Spring事务隔离级别 对应数据库隔离级别 说明 DEFAULT 使用底层数据库的默认隔离级别 Spring不干预,完全依赖数据库<br>(最常用,占95%) READ_UNCOMMITTED READ UNCOMMITTED 读未提交 READ_COMMI 阅读全文
posted @ 2026-01-25 21:11 菜鸟~风 阅读(6) 评论(0) 推荐(0)
摘要: 一、最常用的三种传播机制 1. REQUIRED(默认,最常用) 这是Spring的默认传播行为,也是使用最多的。行为规则: 如果当前存在事务,就加入这个事务 如果当前没有事务,就新建一个事务 实际场景:比如我有一个转账业务,调用了扣款和加款两个方法: 转账方法开启了事务A 扣款方法用REQUIRE 阅读全文
posted @ 2026-01-25 20:27 菜鸟~风 阅读(10) 评论(0) 推荐(0)
摘要: JDK动态代理和CGLIB代理的机制和选择 一、实现原理的本质区别 JDK动态代理是基于接口实现的。它利用Java反射机制,在运行时动态生成一个实现了目标接口的代理类。这个代理类实现了跟目标对象相同的接口,当调用接口方法时,会转发给InvocationHandler的invoke方法,我们在invo 阅读全文
posted @ 2026-01-25 20:01 菜鸟~风 阅读(13) 评论(0) 推荐(0)
摘要: 一、实现原理的本质区别 Spring AOP是基于动态代理实现的。在运行时,Spring会为目标Bean创建一个代理对象。如果目标类实现了接口,就用JDK动态代理;如果没有接口,就用CGLIB生成子类代理。所有方法调用都先经过代理对象,代理对象负责执行切面逻辑,然后再调用真实对象的方法。Aspect 阅读全文
posted @ 2026-01-25 19:51 菜鸟~风 阅读(6) 评论(0) 推荐(0)