面试题目:讲一下对 Spring 事务的理解
📅 2026/7/23 4:26:41
👁️ 阅读次数
📝 编程学习
Spring 本身是没有事务的,我们可以从 Spring 如何去实现对数据库事务的一个封装去讲。
底层的运行原理就是你给方法加了@Transactional这个注解。Spring 就会给这个类去生成一个代理对象。当我们调用这个方法的时候,其实就是走的代理对象的逻辑。方法在执行前自动开启数据库事务,方法正常执行完成后,自动提交事务。如果抛出异常就会自动回滚事务。
面试中还会问到事务失效,也就是我们常说的代理失效。
大部分事务的问题根源基本上就是:
- 方法是private。不是公共方法我们不能代理
- 直接调用原对象的方法也会出现失效
Spring 事务还有一个核心配置传播机制:
传播机制是 Spring 专门处理多个事务嵌套的场景。常用的有两个:
REQUIRED就是默认值。有现成的事务就用现成事务,没有就会新建立一个事务。(大部分场景都用这个)REQUIRES_NEW不管有没有现成的事务,都会新建立一个独立的事务。(如记录操作日志)NESTED嵌套事务NEVER从不创建事务
编程学习
技术分享
实战经验