在使用spring的事务管理器时,特别是多个多个数据库源的时候一定要注意以下内容:
1. @Transactional标注为空时,使用缺省的事务管理器。(spring容器缺省事务管理器:以加载顺序,首先加载的作为缺省)
2. @Transactional制定了为定义过的事务管理器时,spring以缺省默认的事务管理器来处理
3. @Transactional指定了不匹配的事务管理器(实际用到的数据源和指定的事务管理器控制的数据源不一致),事务控制将失效
4. @Transactional("xxx")中正确指定了需要使用的事务管理器时,事务控制正常
@Transactional方法的要求:
1. @Transactional 注解应该只被应用到 public 可见度的方法上
2. @Transactional 注解应该只被应用到 入口方法上
从以下博客总结而来: