背景
之前搞多数据源切换都是那套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
注解使用。
在类上写这个注解表示这个类访问的时候都会切换成对应的sqlserver
数据源。
可以看到这个注解可以放在类上和方法上,如何方法和类上都有,优先听方法的。
参考链接
dynamic-datasource: 基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务
后续安排
看看baomidou的这个依赖具体实现。