Spring数据库多数据源路由配置过程图解

作者:青葱岁月 时间:2024-01-26 11:23:55 

项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库( biz --> db,可能存在多对一情况),

查看springjdbc源码发现AbstractRoutingDataSource类作为一个数据源路由抽象类,可以担当这个事情,其设计思想也比较简单,

首先将多个数据源的映射关系自己维护完成后注入进来,然后自己定义一个路由规则,重点部分见代码:

Spring数据库多数据源路由配置过程图解

首先可以看到该类是一个抽象类,重点关注变量targetDataSource和resolvedDataSources.

其中targetDataSource用于将用户建立的映射关系注入进来,可以通过如下方法

Spring数据库多数据源路由配置过程图解

resolvedDataSources用于真正存储依赖关系,targetDataSource仅仅是个中介,解析代码见下图

Spring数据库多数据源路由配置过程图解

核心路由方法:

Spring数据库多数据源路由配置过程图解

是不是很清楚,首先获取数据源映射key,然后通过key获取数据源

数据源映射获取方法为抽象方法,见下图:

Spring数据库多数据源路由配置过程图解

实现时需要注意线程安全,最佳实现时通过ThreadLocal将在dbsql执行前将key设置进去,以便后来获取这个key,

调用入口:

Spring数据库多数据源路由配置过程图解

来源:https://www.cnblogs.com/lxk2010012997/p/10547172.html

标签:spring,数据库,数据源,路由
0
投稿

猜你喜欢

  • Python列表推导式与生成器用法分析

    2022-03-21 12:06:54
  • Python实现的knn算法示例

    2022-09-21 14:35:09
  • 动态载入asp树源码

    2007-09-06 19:34:00
  • 构建成功web应用的十项黄金法则

    2010-09-17 19:11:00
  • Go语言实现JSON解析的方法详解

    2024-04-26 17:24:01
  • 合并SQL脚本文件的方法分享

    2024-01-21 10:00:49
  • opencv实现图像旋转效果

    2023-07-17 13:28:40
  • tensorflow-gpu安装的常见问题及解决方案

    2021-08-18 11:31:18
  • 浅析MySQL - MVCC

    2024-01-24 14:29:22
  • golang gorm开发架构及写插件示例

    2024-04-25 13:19:00
  • Sanic框架安装与简单入门示例

    2022-06-08 19:37:41
  • laravel 5 实现模板主题功能(续)

    2024-05-03 15:28:50
  • 十行代码使用Python写一个USB病毒

    2021-08-27 17:05:41
  • CSS自定义属性Expression

    2011-04-29 14:17:00
  • WEB2.0网页制作标准教程(1)选择什么样的DOCTYPE

    2007-11-13 12:57:00
  • vue+canvas实现拼图小游戏

    2024-05-09 15:09:34
  • php获取客户端IP及URL的方法示例

    2024-05-03 15:49:01
  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    2021-12-18 10:27:02
  • div水平垂直居中方法(淘宝招聘css题目)

    2007-10-25 12:48:00
  • Selenium元素定位的30种方式(史上最全)

    2023-11-13 17:03:41
  • asp之家 网络编程 m.aspxhome.com