疯狂的狮子li
2020-02-18 a1cf719d268a9d16db81ece94e75037c844f898f
ruoyi/src/main/java/com/ruoyi/framework/datasource/DynamicDataSourceContextHolder.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.ruoyi.framework.datasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * æ•°æ®æºåˆ‡æ¢å¤„理
 *
 * @author ruoyi
 */
public class DynamicDataSourceContextHolder
{
    public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);
    /**
     * ä½¿ç”¨ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
     *  æ‰€ä»¥æ¯ä¸€ä¸ªçº¿ç¨‹éƒ½å¯ä»¥ç‹¬ç«‹åœ°æ”¹å˜è‡ªå·±çš„副本,而不会影响其它线程所对应的副本。
     */
    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
    /**
     * è®¾ç½®æ•°æ®æºçš„变量
     */
    public static void setDataSourceType(String dsType)
    {
        log.info("切换到{}数据源", dsType);
        CONTEXT_HOLDER.set(dsType);
    }
    /**
     * èŽ·å¾—æ•°æ®æºçš„å˜é‡
     */
    public static String getDataSourceType()
    {
        return CONTEXT_HOLDER.get();
    }
    /**
     * æ¸…空数据源变量
     */
    public static void clearDataSourceType()
    {
        CONTEXT_HOLDER.remove();
    }
}