我们最早做新项目的时候一直想做数据库的读写分离与主从同步,由于一些原因一直没有去做这个事情,这次我们需要配置双数据源的起因是因为我们做了一个新项目用了另一个数据库,需要把这个数据库的数据显示到原来的后来上。读写分离本质其实就是写入主库,读从库,就是多数据源的切换,有很多中间件能帮我们完成也有自己实现,大部分做法都是通过aop实现的,再进行service操作的前就把数据源切换了。实现思路都大致相同,具体使用就是仁者见仁智者见智了。

  第一步:设置数据源,在原来的配置文件加上新的数据源

  

  第二步:修改mybatis配置sqlSessionFactory

  

  第三步:修改事务transactionManager

  

  第四步:配置dateSource引用

  

  第五步:定义一个数据源切换类

  

  最后一步使用:根据现有业务决定定义注解方式标注哪些类或方法需要使用新数据源,通过拦截器方式拦截所有请求

  定义注解

  

  配置连接器

  

  创建拦截器实现数据源切换(省略postHandle方法)

  

  

  然后再需要使用的类或者方法加上@TestDataSource("testDataSource")就可以切换数据源了。使用有很多方式,文章介绍的只是我现在业务用到的,最终都是使用切换类来切换数据库dateSource。前端时间一直很忙,没有闲下来去学一些东西,忙新项目的过程中也遇到一些我没见到过的问题,我会写下来分享出来。这篇文章只介绍了springmvc中使用,在springboot中也时一样的,也可以通过注解的方式来实现。

  

spring项目配置双数据源读写分离的更多相关文章

  1. Spring配置动态数据源-读写分离和多数据源

    在现在互联网系统中,随着用户量的增长,单数据源通常无法满足系统的负载要求.因此为了解决用户量增长带来的压力,在数据库层面会采用读写分离技术和数据库拆分等技术.读写分离就是就是一个Master数据库,多 ...

  2. 【Spring】Spring如何实现多数据源读写分离?这是我看过最详细的一篇!!

    写在前面 很多小伙伴私聊我说:最近他们公司的业务涉及到多个数据源的问题,问我Spring如何实现多数据源的问题.回答这个问题之前,首先需要弄懂什么是多数据源:多数据源就是在同一个项目中,会连接两个甚至 ...

  3. spring+mybatis 配置双数据源

    配置好后,发现网上已经做好的了, 不过,跟我的稍有不同, 我这里再拿出来现个丑: properties 文件自不必说,关键是这里的xml: <?xml version="1.0&quo ...

  4. Spring项目配置多数据源

    项目中有用到多数据源,并进行动态切换,使用的是阿里的druid.看网上有一篇大致一样的就偷偷懒 import java.sql.SQLFeatureNotSupportedException; imp ...

  5. spring boot 配置双数据源mysql、sqlServer

    背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息 spring.datasource.url=jdbc:mysql://xxxx/test sp ...

  6. Spring Boot2.4双数据源的配置

    相较于单数据源,双数据源配置有时候在数据分库的时候可能更加有利 但是在参考诸多博客以及书籍(汪云飞的实战书)的时候,发现对于spring boot1.X是完全没问题的,一旦切换到spring boot ...

  7. 170301、使用Spring AOP实现MySQL数据库读写分离案例分析

    使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...

  8. Mybatis多数据源读写分离(注解实现)

    #### Mybatis多数据源读写分离(注解实现) ------ 首先需要建立两个库进行测试,我这里使用的是master_test和slave_test两个库,两张库都有一张同样的表(偷懒,喜喜), ...

  9. spring+mybatis+mysql5.7实现读写分离,主从复制

    申明:请尽量与我本博文所有的软件版本保持一致,避免不必要的错误. 所用软件版本列表:MySQL 5.7spring5mybaties3.4.6 首先搭建一个完整的spring5+springMVC5+ ...

随机推荐

  1. xrange和range的区别?

    range: 函数说明,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个列表. xrange:函数说明,xrange 用法与 ...

  2. Classification and Decision Trees

    分类和决策树(DT). 决策树是预测建模机器学习的一种重要算法. 决策树模型的表示是二叉树.就是算法和数据结构中的二叉树,没什么特别的.每个节点表示一个单独的输入变量(x)和该变量上的左右孩子(假设变 ...

  3. Kali Linux 2019.4 vmtool安装

    1.如图点击 2.桌面上光盘把vmtool拿出来 然后解压加权限并执行 3.一路回车即可 如下图安装成功 然后reboot重启即可

  4. 检验多个xsd的xml是否合法

    Java - 使用 XSD 校验 XML https://www.cnblogs.com/huey/p/4600817.html 这种方法不支持多个xsd文件,会报错 可以使用XMLBeans Too ...

  5. php Web 项目的文件/文件夹上传下载

    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...

  6. jmxtrans docker-compose 运行

    以下是一个简单的demo,使用jmxtrans 进行jmx 指标的处理,项目使用docker-compose 运行 同时写入数据到graphite 环境准备 docker-compose文件   ve ...

  7. PowerDesigner 创建表的时候 没有自增长Id的设置项

    今天早上同事创建表的时候,在那个界面没有自增长Id的选项,当时我也纳闷,软件肯定都是一样的,设置的步骤都一样(有些配置好的 我就没改过 然后就忘了还改过些什么步骤了),结果还是没有那个选项 百度了一下 ...

  8. 微信公众号_Deejo说_2019

    说明: 1. 文中的内容均来自Deejo说微信公众号 2. 微信中搜索"Deejo说"公众号,可关注 麻麻英语 ——2019.09.10—— It’s my treat. 我来请客 ...

  9. numpy.linalg.svd函数

    转载自:python之SVD函数介绍 函数:np.linalg.svd(a,full_matrices=1,compute_uv=1) 参数: a是一个形如\((M,N)\)的矩阵 full_matr ...

  10. 分享一些好用的 Chrome 扩展

    阅读本文大概需要 2.8 分钟. 前言 使用浏览器扩展程序可以使你的工作效率提高数倍不止,那么下面我就向大家分享一下我日常使用的扩展,可能大多数扩展大家都已经在使用了,不过也难免有一两个是你不知道的. ...