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