SpringBoot 多数据源 - dynamic-datasource | 快速入门

本文详细介绍了如何在SpringBoot项目中使用dynamic-datasource进行多数据源配置,包括引入依赖、配置数据源以及使用@DS注解切换数据源。dynamic-datasource支持JDK 1.7+,SpringBoot 1.5.x到3.x,并提供了与MyBatisPlus、Quartz、ShardingJDBC等组件的集成方案。文章还涵盖了数据源的动态增删、自定义数据源来源和事务管理等进阶用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


👉 本节目标:快速实现 dynamic-datasource 的入门案例。
🔊 版本

  • JDK 17
  • Spring Boot 3.2.1
  • dynamic-datasource 4.3.0

🚀 主要步骤

  • 1️⃣ 引入依赖
  • 2️⃣ 配置数据源
  • 3️⃣ 使用 @DS 注解切换数据源

简介

dynamic-datasourc:一个基于 SpringBoot 的快速集成多数据源的启动器。
特性:

  • 支持 JDK 1.7+
  • 支持 SpringBoot 1.5.x、2.x、3.x
  • 支持 数据源分组,适用于多种场景:纯粹多库读写分离一主多从混合模式
  • 连接池集成:简化对 Druid、HikariCP、BeeCP、Dbcp2 的快速集成
  • 第三方集成:提供对 MyBatisPlus、Quartz、ShardingJDBC、P6spy、JDNI 等组件集成方案
  • 进阶用法
    • 启动前
      • 支持数据库敏感配置加密(可自定义、ENC())
      • 支持 自定义注解 ,需继承DS(3.2.0+)
    • 启动时
      • 支持 无数据源启动(启动时无数据源,运行时添加)
      • 支持 **懒加载 **数据源
      • 支持启动时运行初始化 SQL 脚本(表结构和数据)
    • 运行时
      • 支持运行时 动态增减数据源
      • 支持 自定义数据源来源 方案(如从数据库加载,而不是 YAML 配置文件)
      • 支持 SpEL 动态解析数据源,支持从 Session、Header、自定义方式解析数据源
      • 支持 多层数据源嵌套切换(ServiceA >>> ServiceB >>> ServiceC)
      • 提供 **本地多数据源事务方案、 基于 seata 的分布式事务方案 **
      • 提供 MyBatis 环境下的 纯读写分离 方案

第 1 步:引入依赖

引入 dynamic-datasource-spring-boot-starter 依赖

<!-- 适合 SpringBoot 1.5.x + 2.x 版本 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>${version}</version>
</dependency>

<!-- 适合 SpringBoot 3.x 版本 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
  <version>${version}</version>
</dependency>

第 2 步:配置数据源

多种配置数据源的形式

dynamic-datasource 支持多种数据源配置方式:

  • 多主多从:多个主节点,多个从节点。master 分组有两个节点,slave 分组有三个节点。
  • 纯粹多库:单纯就是多个数据库。
  • 混合配置:既有多主多从,也有纯粹多库。

数据源分组:

  • 配置文件所有以下划线 _ 分割的数据源 首部 即为数据源分组名称,相同组名称的数据源会放在一个组下。
  • 使用 @DS 注解切换数据源时,也可以指定数据源分组名称,就会采用负载均衡方式选择具体数据源。
# 多主多从             纯粹多库(记得设置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:

数据源配置示例

配置示例:一个 mysql + 一个 tidb

spring:
  datasource:
    dynamic:
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甘蓝聊Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值