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<Object, Object> 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<Object, Object> targetDataSources) {
|
super.setTargetDataSources(targetDataSources);
|
}
|
|
public Map<Object, Object> getTargetDataSources() {
|
return targetDataSources; // 获取所有目标数据源
|
}
|
}
|