Spring中比较容易失效就是通过@Transactional定义的声明式事务,在以下几个场景会失效: Sping的@Transactional是基于Spring AOP机制实现的,AOP机制又是基于动态代理实现的,如果代理失效,事务也就失效了。异常被捕获会导致事务失效;rollbackFor设置错误; 代理失效的情况: @Transactional应用在非public修饰的方法上;同一个类中的方法调用;final, static 方法,代理对象无法对final方法进行子类化和覆盖。