第一步:引入依賴dynamic-datasource-spring-boot-starter,兼容mybatis-plus
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.1.1</version> </dependency>
第二步:yml配置,記得引入對應的數據庫驅動依賴
spring: datasource: dynamic: primary: master#設置默認的數據源或者數據源組,默認值即為master datasource: master: url: username: password: driver-class-name: salve: url: username: password: driver-class-name:
第三步,使用 @DS 切換數據源。
@DS 可以注解在方法上或類上,同時存在就近原則 方法上注解 優先於 類上注解。
1.沒有@DS 默認數據源
2.@DS("dsName") dsName可以為組名也可以為具體某個庫的名稱
以上是簡單的多數據源配置,接下來是一些動態配置的擴展:
//添加數據源 DynamicRoutingDataSource dynamicRoutingDataSource= SpringUtil.getBean(DynamicRoutingDataSource.class); HikariConfig config = new HikariConfig(); config.setUsername(""); config.setPassword(""); config.setJdbcUrl(""); config.setDriverClassName(""); config.setPoolName(dataSourceName); //默認配置 config.validate(); //添加數據源 dynamicRoutingDataSource.addDataSource(dataSourceName,new HikariDataSource(config)); //切換默認數據源 dynamicRoutingDataSource.setPrimary(dataSourceName); //刪除數據源 dynamicRoutingDataSource.removeDataSource(dataSource);
可以通過修改其默認配置實現數據源的動態管理,更多方法可閱讀DynamicRoutingDataSource類的源碼部分
以及其他一些關鍵類:
DynamicDataSourceAutoConfiguration
DynamicDataSourceCreator
YmlDynamicDataSourceProvider