动态多数据源切换实现原理
最后更新:2023-10-18 20:15:56
|
状态:未完成
2023-03-31之前:
首先这里的数据源切换要依赖spring-jdbc环境,jdbc执行之前会调用AbstractRoutingDataSource实现类的determineCurrentLookupKey() 决定使用哪个数据源
所以我们提供了org.anyline.data.jdbc.ds.DynamicDataSource来实现AbstractRoutingDataSourcedetermineCurrentLookupKey中会调用DataSourceHolder来获取当前数据源,
DataSourceHolder在当前线程里设置了一个数据源名称的变量,我们在执行过程中通过修改这变量来实现切换数据源
为每个数据源创建一个对应的JdbcTemplate,切换数据源时实际是切换的JdbcTemplate
一方面隔离离强,另一方面可以避免同一个项目中有多个AbstractRoutingDataSource实现而造成冲突