package com.ltkj.db; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; public class DynamicDataSource extends AbstractRoutingDataSource { private final Map targetDataSources = new HashMap<>(); // 存储所有数据源 @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getDataSourceKey(); // 根据上下文获取当前数据源的键 } // 添加目标数据源 public void addTargetDataSource(String key, DataSource dataSource) { targetDataSources.put(key, dataSource); super.setTargetDataSources(targetDataSources); // 更新目标数据源 super.afterPropertiesSet(); // 重新初始化数据源 } // 允许外部访问所有目标数据源 @Override public void setTargetDataSources(Map targetDataSources) { super.setTargetDataSources(targetDataSources); } public Map getTargetDataSources() { return targetDataSources; // 获取所有目标数据源 } }