From ffb382ba34aca2dce08ab9e4ef09adc946cf23c8 Mon Sep 17 00:00:00 2001
From: ZY <zc857179121@qq.com>
Date: 星期日, 27 四月 2025 17:26:31 +0800
Subject: [PATCH] 双数据源
---
src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java b/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
new file mode 100644
index 0000000..d8b8519
--- /dev/null
+++ b/src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
@@ -0,0 +1,38 @@
+package com.zy.common.config.ds;
+
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.jdbc.datasource.AbstractDataSource;
+import org.springframework.util.Assert;
+
+import javax.sql.DataSource;
+import java.util.Map;
+
+public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {
+ //澶氭暟鎹簮map闆嗗悎
+ private Map<Object, Object> targetDataSources;
+ //榛樿鏁版嵁婧�
+ private Object defaultTargetDataSource;
+ //鍏跺疄灏辨槸targetDataSources锛屽悗闈㈢殑afterPropertiesSet锛堬級鏂规硶浼氬皢targetDataSources璧嬪�肩粰resolvedDataSources
+ private Map<Object, DataSource> resolvedDataSources;
+ private DataSource resolvedDefaultDataSource;
+
+ public void setTargetDataSources(Map<Object, Object> targetDataSources) {
+ this.targetDataSources = targetDataSources;
+ }
+
+ protected DataSource determineTargetDataSource() {
+ Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");
+ Object lookupKey = this.determineCurrentLookupKey();
+ DataSource dataSource = (DataSource) this.resolvedDataSources.get(lookupKey);
+ if (dataSource == null && ( lookupKey == null)) {
+ dataSource = this.resolvedDefaultDataSource;
+ }
+ if (dataSource == null) {
+ throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");
+ } else {
+ return dataSource;
+ }
+ }
+
+ protected abstract Object determineCurrentLookupKey();
+}
\ No newline at end of file
--
Gitblit v1.9.1