springboot系列:实现多数据源配置,开箱即用|超级详细,建议收藏
Posted bug菌¹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot系列:实现多数据源配置,开箱即用|超级详细,建议收藏相关的知识,希望对你有一定的参考价值。
👨🎓作者:bug菌
🎉简介:在CSDN、掘金等社区优质创作者,全网合计6w粉+,对一切技术都感兴趣,重心偏java方向,目前运营公众号[猿圈奇妙屋],欢迎小伙伴们的加入,一起秃头。
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!
小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章 点亮👍吧,您的点赞三连( 收藏⭐️+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
正常情况下我们在开发系统的时候都是使用一个数据源,但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大,便会一个项目对应多个数据源,即就会有个问题,Springboot 配置db都是默认加载数据源连接,连接池默认配置,但是配置多个数据库url,这该怎么实现呢?
不用担心,我们就是为了解决而写的,不用复杂的实现方式,什么Springboot+mybatis在配置文件中配置多个数据源,然后mapper指定连接配置等,不,不需要,我嫌太麻烦了,今天我就要给你们安利它: dynamic-datasource-spring-boot-starter,一个基于springboot的快速集成多数据源的启动器,开箱即用,超级方便。接下来我就为大家一一讲解,虽然配置很简单,但是坑也比较多,bug菌都为大家给淌过啦,你们就直接直接拿去用即可!
二、dynamic-datasource-spring-boot-starter🔥
1️⃣简介
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。其支持 Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。
2️⃣特性
- 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
- 支持数据库敏感配置信息 加密 ENC()。
- 支持每个数据库独立初始化表结构schema和数据库database。
- 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
- 支持 自定义注解 ,需继承DS(3.2.0+)。
- 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
- 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
- 提供 自定义数据源来源 方案(如全从数据库加载)。
- 提供项目启动后 动态增加移除数据源 方案。
- 提供Mybatis环境下的 纯读写分离 方案。
- 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
- 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供 **基于seata的分布式事务方案。
- 提供 本地多数据源事务方案。
3️⃣实战使用
第一步:老规矩,先引依赖包。引入dynamic-datasource-spring-boot-starter;
<!--配置多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
第二步:配置数据源。
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
url: jdbc:mysql://localhost:3306/springboot_db?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
slave_1:
driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
url: jdbc:mysql://127.0.0.1:3306/test_db2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
拓展:同时也支持多主多从,多种不同库及混合配置。
第三步:实战演示:
我们先来指定配置环境:具体配置如下
配置好配置环境后,先启动下项目,查看库是否都正常连接。如下控制台启动打印的日志,表示两库都正常连接.
接着,我们先创建两个实体,分别对应db1和db2的user表:
接着写一个controller类;
接着接口实现层:
这里我就为大家讲解一下了。
数据源切换,使用的是提供的 @DS 注解。
其中@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。(所以你们看上边,注解在类上使用的是主库,但是基于下边某个方法就是制定了从库,但是我这样放一起是为了给大家看比较,一般会直接分类写,不会一个类上出现多个数据源。)
注:@DS("dsName") dsName可以为组名也可以为具体某个库的名称。
第四步:访问接口查看结果。
先是访问接口1:localhost:8888/dbUser/query-users-for-db-one;如下请求结果,大家请看,成功拿到了db1库中的数据。
再请求下接口2:localhost:8888/dbUser/query-users-for-db-two如下请求结果,大家请看,成功拿到了db2库中的数据。
再做个测试,我们把db1与db2中的数据同时返回,看看能否成功:
我们先写两接口,然后分别将数据用map返回:
请求结果如下:
然后给大家看下数据库数据,以免被大家说是同一个库中的数据。
好啦,以上就是同mysql数据源的配置流程及实例演示啦,如果还有啥不清楚的小伙伴,欢迎下方留言。接着就是针对后边两种配置方式,就自行尝试啦,看上去都是一样的。
有需求的小伙伴,看完之后,使用起来是不是很简单,压根不需要用传统的mybatis配置多个连接器,mybatis-plus都帮我们封装好啦,开箱即用。
三、往期推荐🔥
- springboot系列(一):如何创建springboot项目及启动
- springboot系列(三):多环境切换,实例演示
- springboot系列(四):stater入门
- springboot系列(五):史上最最最全springboot常用注解
- springboot系列(六):mysql配置及数据库查询
- springboot系列(七):如何通过mybatis-plus实现接口增删改查
- springboot系列(八):mybatis-plus之条件构造器使用手册
- springboot系列(九):mybatis-plus之如何自定义sql
- springboot系列(十):mybatis之xml映射文件>、<=等特殊符号写法
- springboot系列(十一):实现多数据源配置,开箱即用
- springboot系列(十二):如何实现邮件发送提醒,你一定得会(准备篇)
- springboot系列(十三):如何实现发送普通邮件?你一定得会
- springboot系列(十四):如何实现发送图片、doc文档等附件邮件?你一定得会
- springboot系列(十五):如何实现静态邮件模板发送?你一定得会
- springboot系列(十六):如何实现发送邮件提醒,附完整源码
- springboot系列(十七):集成在线接口文档Swagger2
- springboot系列(十八):如何Windows安装redis?你玩过么
- springboot系列(十九):如何集成redis?不会我教你
- springboot系列(二十):如何通过redis实现手机号验证码功能
- ... ...
四、文末🔥
如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
最后送大家两句我很喜欢的话,与诸君共勉!
☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start。
🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。
💌如果文章对您有所帮助,就请留下您的赞吧!(#^.^#);
💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
💗如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;
💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。
以上是关于springboot系列:实现多数据源配置,开箱即用|超级详细,建议收藏的主要内容,如果未能解决你的问题,请参考以下文章
收藏夹吃灰系列(十三):Springboot项目配置多数据源,实例演示 | 开箱即用,超级详细。