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