如题所示,项目原本已经对一些mapper设置了数据源
如下所示
@MapperScan(basePackages = {"cn.com.aia.aam.core.**.mapper", "cn.com.aia.aam.core.*.*.mapper", "cn.com.aia.aam.core.*.*.*.mapper", "cn.com.aia.aam.sync.*.mapper"},
sqlSessionFactoryRef = MAINDEV_SF)
然后再通过AOP切面的形式来实现多数据源切换,但是在方法上使用注解和要切换数据源发现,已经可以正确获取到数据源但是并没有成功切换。
两个数据源测试均连接正常
按道理应该用mybatis的拦截器实现,不是用aop实现
需要做两个动作:
1、使用AbstractRoutingDataSource来封装你的两个dataSource,以实现按需切换:
https://www.baeldung.com/spring-abstract-routing-data-source
mybatis的sqlSessionFactoryRef指向这个新的代理dataSource
2、自定义注解,利用AOP机制来执行上述的按需切换