From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期五, 24 十一月 2023 17:51:40 +0800
Subject: [PATCH] merge

---
 assess-common/src/main/java/com/gkhy/assess/common/config/DynamicDataSourceContextHolder.java |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/assess-common/src/main/java/com/gkhy/assess/common/config/DynamicDataSourceContextHolder.java b/assess-common/src/main/java/com/gkhy/assess/common/config/DynamicDataSourceContextHolder.java
new file mode 100644
index 0000000..c077caf
--- /dev/null
+++ b/assess-common/src/main/java/com/gkhy/assess/common/config/DynamicDataSourceContextHolder.java
@@ -0,0 +1,40 @@
+package com.gkhy.assess.common.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 动态数据库切换处理
+ */
+public class DynamicDataSourceContextHolder {
+
+    public static final Logger logger= LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);
+
+    /**
+     * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
+     * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
+     */
+    private static final ThreadLocal<String> CONTEXT_HOLDER=new ThreadLocal<>();
+
+    /**
+     * 设置数据源的变量
+     */
+    public static void setDataSourceType(String dsType){
+        logger.info("切换到{}数据源",dsType);
+        CONTEXT_HOLDER.set(dsType);
+    }
+
+    /**
+     * 获得数据源的变量
+     */
+    public static String getDataSourceType(){
+        return CONTEXT_HOLDER.get();
+    }
+
+    /**
+     * 清空数据源变量
+     */
+    public static void clearDataSourceType(){
+        CONTEXT_HOLDER.remove();
+    }
+}

--
Gitblit v1.9.2