多数据源动态切换

225 阅读2分钟

多数据源动态切换

在开发过程中,有时候会遇到这样的一个场景,就是同一个项目可能会需要连接多个不同的数据库,但是我们平时开发的时候,一般只会配置一个数据源,这个时候就要用到多数据源动态切换了,这里我采用最简单的方式来进行实现,通过使用dynamic-datasource-spring-boot-starter来集成多数据源切换的功能。

一、引入依赖包

dynamic-datasource-spring-boot-starter: 基于springboot的快速集成多数据源的starter

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

二、进行多数据源的配置

spring:
  profiles:
    active: dev
  datasource:
    dynamic:
      primary: mysql #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        mysql:
          driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
          url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
          username: root
          password: ***
        postgresql:
          driver-class-name: org.postgresql.Driver # 3.2.0开始支持SPI可省略此配置
          url: jdbc:postgresql://127.0.0.1:5432/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
          username: postgres
          password: ***
server:
  port: 8080

三、通过@DS注解进行数据源的切换

@DS("name")注解可以写在方法上,也可以写在类上,通过设置不同的name来进行数据源的切换,如果不进行配置,则使用默认的数据源

uTools_1671004766076.png

使用默认数据源的时候可以不进行配置

uTools_1671004818193.png

四、在controller中调用service进行测试

uTools_1671004950745.png

uTools_1671004993016.png

uTools_1671005023199.png

uTools_1671005054855.png

测试通过,可以达到动态数据源切换的功能

五、总结

进行多数据源的动态切换其实有很多方式,但是对于我自己而言,这种方式无疑是最简便的,只需要导入对应的依赖,进行简单的配置,即可达到理想的效果。