这里还有一个问题:IOC中存在多个数据源了,那么事务管理器怎么办呢?它也懵逼了,到底选择哪个数据源呢?因此事务管理器肯定还是要重新配置的。
事务管理器此时管理的数据源将是动态数据源DynamicDataSource,配置如下:
/** * 重写事务管理器,管理动态数据源 */ @Primary @Bean(value = "transactionManager2") public PlatformTransactionManager annotationDrivenTransactionManager(DynamicDataSource dataSource) { return new DataSourceTransactionManager(dataSource); }至此,Mybatis与多数据源的整合就完成了。
演示使用也是很简单,在需要切换数据源的方法上方标注@SwitchSource切换到指定的数据源即可,如下:
//不开启事务 @Transactional(propagation = Propagation.NOT_SUPPORTED) //切换到HIS的数据源 @SwitchSource @Override public List<DeptInfo> list() { return hisDeptInfoMapper.listDept(); }这样只要执行到这方法将会切换到HIS的数据源,方法执行结束之后将会清除,执行默认的数据源。
总结本篇文章讲了Spring Boot与单数据源、Mybatis、多数据源之间的整合,希望这篇文章能够帮助读者理解多数据源的整合,虽说用的不多,但是在有些领域仍然是比较重要的。