主题
请用 30 秒说明 Spring 事务是怎样工作的
题型:30 秒基础题 · 讲清代理、事务管理器、资源绑定和提交回滚。
30 秒回答
Spring 声明式事务通常由 AOP 代理拦截 @Transactional 方法,根据事务属性通过 PlatformTransactionManager 获取或加入事务,并把数据库连接等资源绑定到当前执行上下文。方法正常结束时提交,满足回滚规则的异常抛出时回滚。它保证的是被同一事务管理器覆盖的资源边界,不会自动把远程调用、消息发送和多个异构数据源变成一个原子事务。
面试官关注点
- 是否知道注解只是入口,真正执行依赖代理和事务管理器。
- 是否能说清事务边界、回滚规则和资源范围。
- 是否主动指出远程副作用与本地数据库事务不是一回事。
易错点
- 不要说加上
@Transactional就一定生效,自调用、非代理对象和错误代理方式都可能绕过拦截。 - 不要承诺 Spring 本地事务能保证消息、缓存和远程服务一起原子提交。