You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
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(); |
|
} |
|
}
|
|
|