2018-08-05 12:49:07 +08:00
|
|
|
|
package com.ruoyi.framework.datasource;
|
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
|
|
/**
|
2018-08-18 23:51:19 +08:00
|
|
|
|
* 数据源切换处理
|
2018-08-05 12:49:07 +08:00
|
|
|
|
*
|
|
|
|
|
* @author ruoyi
|
|
|
|
|
*/
|
|
|
|
|
public class DynamicDataSourceContextHolder
|
|
|
|
|
{
|
|
|
|
|
public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);
|
|
|
|
|
|
2018-08-18 23:51:19 +08:00
|
|
|
|
/**
|
|
|
|
|
* 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
|
|
|
|
|
* 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
|
|
|
|
|
*/
|
2018-08-05 12:49:07 +08:00
|
|
|
|
private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
|
|
|
|
|
|
|
|
|
|
/**
|
2018-08-18 23:51:19 +08:00
|
|
|
|
* 设置数据源的变量
|
2018-08-05 12:49:07 +08:00
|
|
|
|
*/
|
2018-08-18 23:51:19 +08:00
|
|
|
|
public static void setDateSoureType(String dsType)
|
2018-08-05 12:49:07 +08:00
|
|
|
|
{
|
2018-08-18 23:51:19 +08:00
|
|
|
|
log.info("切换到{}数据源", dsType);
|
|
|
|
|
CONTEXT_HOLDER.set(dsType);
|
2018-08-05 12:49:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2018-08-18 23:51:19 +08:00
|
|
|
|
* 获得数据源的变量
|
2018-08-05 12:49:07 +08:00
|
|
|
|
*/
|
2018-08-18 23:51:19 +08:00
|
|
|
|
public static String getDateSoureType()
|
2018-08-05 12:49:07 +08:00
|
|
|
|
{
|
|
|
|
|
return CONTEXT_HOLDER.get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2018-08-18 23:51:19 +08:00
|
|
|
|
* 清空数据源变量
|
2018-08-05 12:49:07 +08:00
|
|
|
|
*/
|
2018-08-18 23:51:19 +08:00
|
|
|
|
public static void clearDateSoureType()
|
2018-08-05 12:49:07 +08:00
|
|
|
|
{
|
|
|
|
|
CONTEXT_HOLDER.remove();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|