| 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(); | 
|     } | 
| } |