导致声明式事务失效的场景
1.方法非 public 修饰:代理(JDK or CGLib)默认都是代理public方法(接口中的方法都是public的)
2.rollbackfor设置不当
3.事务传播机制设置不当:not_supported or never
4.本地方法调用:调用同一个类中的方法使用的是this不是代理对象
5.static final修饰的:不属于对象属于类无法代理
6.Bean没有被IOC管理
7.多线程:@Transactional 的事务管理使用的是 ThreadLocal 机制来存储事务上下文