笔者最近项目中用到了多数据源的事务处理,由于经验不足,写的事务总是不能正常rollback,spring的配置文件如下:
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:annotation-driven transaction-manager="transactionManagerCeo"/>
Service层中的方法上,写法如下:
@Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class)
由于实际上该事务是用的transactionManagerCeo这个事务管理器,但是由于spring中默认是按照排序靠前的事务管理器,此时事务就不起作用了,只要加上一个参数value即可,如下所示
@Transactional(propagation=Propagation.REQUIRES_NEW,rollbackFor= Exception.class,value="transactionManagerCeo")