实践 springboot 多数据源
搭建环境
本次实验的环境搭建 需要3个mysql,来完成1主2从的主从复制
我花了3个小时尝试搭建mysql,最后发现主从复制失败,后来找到了下面这篇博客,用docker搭建,只用了10分钟就完成了
https://blog.csdn.net/sunlihuo/article/details/54018843
创建项目
我使用springboot来快速搭建环境
orm使用的是spring-jdbc
数据源的配置如下
主从切换
spring对主从切换提供了一个抽象类AbstractRoutingDataSource
所以我们创建一个动态数据源继承这个类
接下来是配置数据源,配置数据源有很多方法 ,比如网上的一种方式
不过此次,我用了另外一个方式配置(ImportBeanDefinitionRegistrar),实现这个类就可以动态的注册bean,其实和上面的是相同的,都是向ioc容器中配置datasource的bean,具体参见我的代码
然后,因为每次请求时单独的线程,而每次请求的数据源可能都不一样,所以我们要针对每个线程,让其持有需要的数据源,所以创建一个类,使用threadlocal让每个线程持有自己的数据源
然后为了方便配置数据源,我们写一个注解方便给每个方法配置专属的数据源,以及对应的aop配置
然后创建我们的测试方法
结果
期间很多借鉴了( http://412887952-qq-com.iteye.com/blog/2303075),并修改成符合自己的代码
最后放上我的代码 https://github.com/cdy1996/master-slave