时间:2021-07-01 10:21:17 帮助过:35人阅读
其中dynamicDataSource就是上面实现AbstractRoutingDataSource的类,里面ref的dataSource就是默认的数据源,其他配置数据ref的地方就使用这个dynamicDataSource,而不是dataSource。
最后就是怎么使用。因为dynamicDataSource已经被spring管理起来了,所以,我们只需要在我们会用到的地方先生成一个数据库名称列表,可以从其他数据库中查询,然后调用refreshDataSources方法,最后调用
DataSourceContextHolder.setDataSourceType("你要切换的数据库名称");
下面是DataSourceContextHolder的代码
public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setDataSourceType(String dataSourceType) { contextHolder.set(dataSourceType); } public static String getDataSourceType() { return contextHolder.get(); } public static void clearDataSourceType() { contextHolder.remove(); } }
到此,一个完整的实现数据库热切换的功能就全部实现了,有其他特定的需求可以在此基础上修改。
本文出自 “伯彧” 博客,请务必保留此出处http://chrischen.blog.51cto.com/9954795/1878517
Spring+Mybatis项目中通过继承AbstractRoutingDataSource实现数据库热切换
标签:abstractroutingdatasource 数据库热切换