在Spring中,类A的A1方法内部调用类B的B1方法,B1方法上标注了@Transactional,且B1内部又调用B2方法。请分析B1和B2中的数据库操作是否会被包裹在同一个事务中?给出理由。
考察说明
考察Spring事务传播机制与代理调用关系
回答思路
- 识别B1是公共方法且由A注入的代理对象调用
- 说明Spring默认使用JDK动态代理或CGLIB代理
- 正确分析A1调用B1是外部代理调用,事务生效
- B1内部调用B2是this调用,不经过代理,事务不传播
- 总结只有B1的事务生效,B2并入B1事务(若B1开启)
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。