实践 springboot 多数据源

本文分享了使用Spring Boot和Docker快速搭建1主2从的MySQL主从复制环境的经验,包括解决过程中遇到的问题及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建环境

本次实验的环境搭建 需要3个mysql,来完成1主2从的主从复制

我花了3个小时尝试搭建mysql,最后发现主从复制失败,后来找到了下面这篇博客,用docker搭建,只用了10分钟就完成了

https://blog.youkuaiyun.com/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 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值