动态配置多数据源
第一步:引入依赖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