Spring Boot + MyBatis-Plus 实现 MySQL 主从复制动态数据源切换
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.provider.AbstractDataSourceProvider;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
@Configuration
public class DynamicDataSourceConfig {
@Bean
public DynamicDataSourceProvider dynamicDataSourceProvider() {
return new MyDynamicDataSourceProvider();
}
@Bean
@Primary
public DynamicRoutingDataSource dynamicRoutingDataSource(DynamicDataSourceProperties properties) {
DynamicRoutingDataSource dynamicRoutingDataSource = new DynamicRoutingDataSource();
// 设置默认数据源
dynamicRoutingDataSource.setDefaultDataSource(properties.getDatasource().getDynamic().getPrimary());
// 设置数据源提供者
dynamicRoutingDataSource.setDataSourceProvider(dynamicDataSourceProvider());
return dynamicRoutingDataSource;
}
}
class MyDynamicDataSourceProvider extends AbstractDataSourceProvider {
@Override
public DataSource getDataSource(String ds) {
// 根据需要动态选择数据源的逻辑
// 可以是根据配置文件、环境变量、数据库等方式来选择
// 返回对应的数据源实例
return null;
}
}
这个代码实例展示了如何在Spring Boot项目中配置和定义DynamicRoutingDataSource
,它会根据需要动态地切换到不同的数据源。这里的MyDynamicDataSourceProvider
类是一个抽象类的具体实现,它需要根据实际情况提供获取数据源的逻辑。
评论已关闭