在Spring框架中,事务失效的常见场景主要集中于编程错误、配置不当和框架特性限制等方面,以下是20种典型场景的归纳与分析:
一、编程错误导致的事务失效
事务方法非public修饰
- Spring AOP代理默认仅拦截public方法,若事务方法为private、protected或默认权限,事务将失效。
- 示例:@Service
public class UserService {
@Transactional // 失效!
private void updateUser(User user) {
/* … */ }
}
自调用(内部方法调用)
- 类内部方法A调用事务方法B时,若通过this.B()调用,因代理机制失效导致B的事务不生效。
- 解决方案:通过注入自身代理对象调用(如@Autowired private UserService self; self.B())。
异常被捕获但未抛出
- 事务方法内捕获异常后未重新抛出,或未调用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(),事务无法感知异常。
- 示例:
网硕互联帮助中心





评论前必须登录!
注册