多数据源动态切换
在开发过程中,有时候会遇到这样的一个场景,就是同一个项目可能会需要连接多个不同的数据库,但是我们平时开发的时候,一般只会配置一个数据源,这个时候就要用到多数据源动态切换了,这里我采用最简单的方式来进行实现,通过使用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来进行数据源的切换,如果不进行配置,则使用默认的数据源
使用默认数据源的时候可以不进行配置
四、在controller中调用service进行测试
测试通过,可以达到动态数据源切换的功能
五、总结
进行多数据源的动态切换其实有很多方式,但是对于我自己而言,这种方式无疑是最简便的,只需要导入对应的依赖,进行简单的配置,即可达到理想的效果。