[开源]适配 SpringBoot 3 多数据源、动态数据源、主从分离、快速启动器、支持分布式事务

一、开源项目简介

dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。

其支持 Jdk 1.7+, SpringBoot 1.5.x 2.x.x 3.x.x

基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

四、功能概述

特性

  • 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
  • 支持数据库敏感配置信息 加密(可自定义) 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的分布式事务方案 。
  • 提供 本地多数据源事务方案。

约定

  1. 本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
  2. 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
  3. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
  4. 默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
  5. 方法上的注解优先于类上注解。
  6. DS支持继承抽象类上的DS,暂不支持继承接口上的DS。

五、技术选型

使用方法

1、引入dynamic-datasource-spring-boot-starter。

spring-boot 1.5.x 2.x.x

<dependency>  <groupId>com.baomidougroupId>  <artifactId>dynamic-datasource-spring-boot-starterartifactId>  <version>${version}version>dependency>

spring-boot3及以上

<dependency>  <groupId>com.baomidougroupId>  <artifactId>dynamic-datasource-spring-boot3-starterartifactId>  <version>${version}version>dependency>

2、配置数据源。

spring:  datasource:    dynamic:      primary: master #设置默认的数据源或者数据源组,默认值即为master      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源      datasource:        master:          url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic          username: root          password: 123456          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置        slave_1:          url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic          username: root          password: 123456          driver-class-name: com.mysql.jdbc.Driver        slave_2:          url: ENC(xxxxx) # 内置加密,使用请查看详细文档          username: ENC(xxxxx)          password: ENC(xxxxx)          driver-class-name: com.mysql.jdbc.Driver       #......省略       #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
# 多主多从                      纯粹多库(记得设置primary)                   混合配置spring:                               spring:                               spring:  datasource:                           datasource:                           datasource:    dynamic:                              dynamic:                              dynamic:      datasource:                           datasource:                           datasource:        master_1:                             mysql:                                master:        master_2:                             oracle:                               slave_1:        slave_1:                              sqlserver:                            slave_2:        slave_2:                              postgresql:                           oracle_1:        slave_3:                              h2:                                   oracle_2:

3、使用 @DS 切换数据源。

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解

注解

结果

没有@DS

默认数据源

@DS(“dsName”)

dsName可以为组名也可以为具体某个库的名称

@Service@DS("slave")public class UserServiceImpl implements UserService {
  @Autowired  private JdbcTemplate jdbcTemplate;
  public List selectAll() {    return  jdbcTemplate.queryForList("select * from user");  }    @Override  @DS("slave_1")  public List selectByCondition() {    return  jdbcTemplate.queryForList("select * from user where age >10");  }}

阅读全文
资源下载
下载价格免费
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=15183,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?