动态多数据源切换实现原理

最后更新:2023-10-18 20:15:56 | 状态:未完成

2023-03-31之前:

首先这里的数据源切换要依赖spring-jdbc环境,jdbc执行之前会调用AbstractRoutingDataSource实现类的determineCurrentLookupKey() 决定使用哪个数据源

所以我们提供了org.anyline.data.jdbc.ds.DynamicDataSource来实现AbstractRoutingDataSource
determineCurrentLookupKey中会调用DataSourceHolder来获取当前数据源,
DataSourceHolder在当前线程里设置了一个数据源名称的变量,我们在执行过程中通过修改这变量来实现切换数据源

2023-03-31之后:
为每个数据源创建一个对应的JdbcTemplate,切换数据源时实际是切换的JdbcTemplate
一方面隔离离强,另一方面可以避免同一个项目中有多个AbstractRoutingDataSource实现而造成冲突
最近更新 搜索 提交