报错如下
org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:
expected single matching bean but found X: transactionManager,X,X
解决方案
使用@Transactional进行事务处理,因为存在多个数据源,如果不直接指定,程序就不知道使用哪一个事务处理器,所以需要在切换数据源时,指定事务处理器。
- 在继承AbstractRoutingDataSource类中添加以下代码
/**
* 事务配置
* 支持注解
* @param multipleDataSource
* @return
*/
@Bean
public DataSourceTransactionManager transactionManager(MultipleDataSource multipleDataSource) {
return new DataSourceTransactionManager(multipleDataSource);
}
2.方法指定事务管理器
@Transactional(transactionManager = "transactionManager")
public int delKcById(String objId) {
int count = 0;
//删除1
kcMapper.deleteById(objId);
//删除2
count +=sjjbxxMapper.deleteById(objId);
return count;
}
总结
具体在哪里加入指定事务处理代码,需要根据实际情况而定。