zoukankan      html  css  js  c++  java
  • spring 数据库多数据源路由

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

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

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

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

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

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

    核心路由方法:

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

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

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

    调用入口:

  • 相关阅读:
    centos安装git
    centos安装nginx和配置
    centos安装samba服务和配置
    合理选择css3动画实现方式
    display:table-cell实现水平垂直居中
    活动的四种启动模式
    我是怎么选搜索引擎的
    这么用Mac才叫爽!
    Linux学习笔记
    软件测试暑期实习总结(2016)
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/10547172.html
Copyright © 2011-2022 走看看