From 093362ca4f902996aeb3586b45ebd2791a2b596f Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期一, 04 八月 2025 15:40:47 +0800 Subject: [PATCH] 20250804 --- src/main/java/com/example/config/db/HospDynamicDataSource.java | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/example/config/db/HospDynamicDataSource.java b/src/main/java/com/example/config/db/HospDynamicDataSource.java new file mode 100644 index 0000000..00b7b78 --- /dev/null +++ b/src/main/java/com/example/config/db/HospDynamicDataSource.java @@ -0,0 +1,36 @@ +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; + } +} -- Gitblit v1.8.0