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 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 targetDataSources) { super.setTargetDataSources(targetDataSources); } public Map getTargetDataSources() { return targetDataSources; } }