package com.example.config.db;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
|
|
import javax.sql.DataSource;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
@Slf4j
|
public class HospDynamicDataSource extends AbstractRoutingDataSource {
|
|
private final Map<Object, Object> targetDataSources = new ConcurrentHashMap<>();
|
|
@Override
|
protected Object determineCurrentLookupKey() {
|
return DataSourceContextHolder.getDataSourceKey();
|
}
|
|
public void addTargetDataSource(String key, DataSource dataSource) {
|
if (dataSource != null) {
|
targetDataSources.put(key, dataSource);
|
super.setTargetDataSources(new ConcurrentHashMap<>(targetDataSources));
|
super.afterPropertiesSet();
|
}
|
}
|
|
@Override
|
public void setTargetDataSources(Map<Object, Object> targetDataSources) {
|
super.setTargetDataSources(targetDataSources);
|
}
|
|
public Map<Object, Object> getTargetDataSources() {
|
return targetDataSources;
|
}
|
}
|