这时,MyBatis Plus提供了多数据源的功能,方便我们处理多个数据源的操作。 多数据源的原理是基于Spring框架的AbstractRoutingDataSource实现的。AbstractRoutingDataSource是一个抽象类,它继承了Spring的AbstractDataSource类并实现了DataSource接口。它充当数据源路由的角色,根据不同的数据源标识选择不同的数据源进行操作。
我们看看mybatisplus的拦截器是怎么处理的 核心代码就这三行,在方法执行前先确定数据源推入到DynamicDataSourceContextHolder,然后再执行方法,再poll出用过的这个数据源,这个玩意是用来持有当前线程要用哪个数据源的。废话不多说直接看源码 这个玩意很简单,就是用来持有当前线程调每个方法时要用哪个数据源,在方法执行之前...
通过以上3步,就可以轻松使用MP切换多数据源的能力了。当然,除了支持主从模式,还支持多主多从、多库,混合模式。原理探究 打开dynamic-datasource-spring-boot-starter.jar包,在spring.factories文件中,可以看到配置了DynamicDataSourceAutoConfiguration启动类。打开DynamicDataSourceAutoConfiguration类,可以看到通过@AutoCo...
打开DynamicDataSourceAutoConfiguration类,可以看到通过@AutoConfigureBefore注解,提前初始化了MP自己的DataSource数据源。 而DataSourceAutoConfiguration类的核心作用就是初始化DataSrouce,MP通过抢先配置的方式,使DataSource变成了自己指定的数据源。 除了初始化MP自己的数据源,DynamicDataSourceAutoConfiguration类还做了一些其他...