多数据源切换

21 阅读1分钟

背景

之前搞多数据源切换都是那套DruidConfig、DynamicDataSource、DynamicDataSourceHolder、要做的更好的就写个注解放在类上进行切面切换数据源。

昨天发现baomidou有这个开源依赖,就弄下来试了下,超级简单和方便,简单记录下。

引入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>

配置文件

spring:
  datasource:
    dynamic:
      enabled: true #启用动态数据源,默认true
      primary: mysql #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      grace-destroy: fase #是否在服务关闭时销毁数据源,默认false
      type: com.alibaba.druid.pool.DruidDataSource
      datasource:
        mysql:
          url: jdbc:mysql://192.168.1.123:3306/testdb?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
          username: root
          password: 123456
          driver-class-name: com.mysql.cj.jdbc.Driver
        sqlserver:
          url: jdbc:sqlserver://192.168.1.145:1433;databaseName=testdb;encrypt=true;trustServerCertificate=true;sslProtocol=TLSv1.2
          username: root
          password: 123456
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

使用

引入依赖和添加相应配置之后,不需要任何配置文件,就可以直接通过@DS注解使用。

image.png

在类上写这个注解表示这个类访问的时候都会切换成对应的sqlserver数据源。

image.png

可以看到这个注解可以放在类上和方法上,如何方法和类上都有,优先听方法的。

参考链接

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

后续安排

看看baomidou的这个依赖具体实现。