1. 方法不是 publicSpring 事务只对 public 方法生效,private/protected 不生效。2. 同类内部调用(this.方法)比如 A 方法无事务,调用同类里有 @Transactional 的 B 方法,事务不生效。原因:没走代理。3. 异常被 try-catch 吃掉了方法里 try-catch 了异常,没往外抛,Spring 感知不到,不会回滚。4. 抛出的异常不是默认类型默认只回滚 RuntimeException & Error。抛 Exception(受检异常)不回滚,需要加:@Transactional(rollbackFor = Exception.class)5. 没有被 Spring 管理类没加 @Service/@Component 等注解,没交给 Spring 容器,事务不生效。6. 多线程调用新线程里的操作不在原事务里,独立连接、独立事务。7. 数据库引擎不支持事务比如 MySQL MyISAM,本身不支持事务,怎么配都没用。8. 传播机制配置错误比如用了 NOT_SUPPORTED、NEVER,会以非事务方式执行。9. 类被代理方式问题(比如 CGLIB 对 final 方法)final / static 方法无法被代理,事务不生效。10. 开启了多个数据源但没指定事务管理器多数据源场景下,没指定对应 txManager,事务不生效。