mysql多数据源切换_Springboot多数据源切换

原标题:Springboot多数据源切换

有些数据量不大,又不是生产环境的操作,用到数据工具还需要开通网络策略,还要做N多配置,最终测试稳定后又不再使用,不划算。考虑到操作机上开了生产、UAT、测试环境的访问策略,通过代码来实现数据抽取、过程调用其实也蛮方便。这之中涉及多数据源切换还比较有意思~

首先在IDEA上创建一个SpringBoot项目,这里配置文件如图:

0b285b8fa21d39312156284725f96d7c.png

主从数据库配置如图,多个从数据库可以依次排列。创建类DynamicDataSourceContextHolder持有数据库键如下图所示:

f0b2145404696d6ee39d0ae4f6b3ace4.png

ThreadLocal变量用来决定具体使用哪一个数据库源。创建类DynamicDataSourceRegister实现ImportBeanDefinitionRegistrar,用来自定义注册bean。

f301f18ff9fc2b5568ff57d17bec01a5.png

注意在添加数据源时,默认数据源、目标数据源分别的名称为defualtTargetSources与targetDataSources,是因为AbstractRoutingDataSource类

0c6be882bf678cb2cd376c83147a5153.png

a352c9f96f7d3e2f0a64bada5f049efe.png

通过继承该类并实现determineCurrent-

LookupKey方法来决定当前数据源。至此只需要每次需要进行数据库操作的时候将DynamicDataSourceContextHolder.HOLDER置为相应的从数据库的key值就可以直接对数据库进行操作(Dao层),如果不指定数据库key值将自动使用默认主数据源。

这里我们使用AOP来进行数据库切换,创建一个注解DataSource:

79e9dee69b0776a1d2eb75114c51623f.png

Value存储数据库的key值。使用@Aspect在持有DataSource注解的方法前后进行切入操作:

6c33e77d0164b61319c9a8c5cc9e2945.png

只需要在相应的Dao方法上加DataSource注解并设置value值,可以对数据源进行灵活切换。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值