spring多数据源配置

spring多数据源配置

数据库通常会配置多数据源,如master—slave节点,或者一个服务调用其他服务的数据库,其中还往往伴随着读写分离。

数据库读写分离时,可以降低主机的压力,如一些大表全量同步时,单条sql语句执行时间很长,会影响到正常业务的运行;当然缺点也是有不少,主备非强同步情况下备机数据的延迟,以及备机如果压力过大是否能够实现热备份和热切换。

在JAVA项目中,通常采用spring框架,本文基于spring-mybatis-mysql进行分析,使用其他持久层原理相同。主要有三种途径:

  1. 直接配置多数据源,通过mapper文件夹来区别注入
  2. AbstractRoutingDataSource注入数据源
  3. MySql集群原生支持,通过replicationDriver和事务实现

推荐文章:

其实上述文章都大同小异,细读一篇就可以了,它们之间相互借鉴都有可能,具体实现上有一点小区别,如AbstractRoutingDataSource注入时,数据源的注入可以通过自定义注解实现,也可以配置切面来实现。此外还有一些需要注意的小细节:通过文件夹注入时,文件夹之间一定要完全独立,不能出现包含与被包含的关系;AbstractRoutingDataSource注入时,数据源和事务的切点先后顺序,必须数据源先注入。

1 条评论

  1. 菜仔卢2017 年 09 月 06 日上午 10:47 回复

    求主题