题目7:Spring 事务与 AOP
📊 评分:— | 📅 完成时间:待完成
📝 题目
Spring 事务的实现原理是什么?
@Transactional在什么情况下会失效?Spring AOP 是基于什么实现的?
💬 我的回答
📖 参考答案
一、Spring 事务原理
- 本质是 AOP + 事务拦截器
- 在方法执行前开启事务
- 方法成功执行后提交事务
- 出现异常时根据规则回滚事务
二、@Transactional 失效场景
- 同类内部调用
- 方法不是
public - 异常被吃掉,没有抛出
- 抛出的异常不在默认回滚范围内
- Bean 没有被 Spring 管理
三、AOP 底层实现
- 有接口时默认用 JDK 动态代理
- 没有接口时一般用 CGLIB
四、实际回答重点
- 不要只说注解,要说代理对象
- 要能说清事务边界是在代理层,而不是方法本身
- 最常见失效场景是自调用
🎯 面试标准话术
"Spring 事务本质上是通过 AOP 给目标方法加一层事务代理。调用经过代理对象时,事务拦截器会在方法前后完成开启、提交和回滚。
@Transactional最常见的失效场景是同类内部调用,因为没有经过代理对象。"