动态数据源
在工作中,我们可能会遇到下面这些情况,如果只是在配置文件中配置数据源就有可能太繁琐,或者无法满足要求
- 需要配置不止一个数据源,数据源的链接信息都不相同
- 需要在服务运行过程中,动态的添加,减少,切换所使用的数据源
- 同一服务中不同的接口服务需要调用不同的数据源信息
1.创建当前线程工具类
通过当前线程工具类,保留当前线程数据源信息,防止数据源切换时导致数据错误
package com.game.server.source;
import lombok.extern.log4j.Log4j;
/**
* 保留当前线程数据源信息
*
*/
@Log4j
public class DataSourceContextHolder {
/**
* 线程级别的私有变量
*/
private static final ThreadLocal<String> CONTEXTHOLDER = new ThreadLocal<>();
/**
* 切换数据源
*/
public static void setDataSource(String datasourceId) {
CONTEXTHOLDER.set(datasourceId);
log.info("已切换到数据源:{}" + datasourceId);
}
public static String getDataSource() {
return CONTEXTHOLDER.get();
}
/**
* 删除数据源
*/
public static void removeDataSource() {
CONTEXTHOLDER.remove();
log.info("已切换到主数据源");
}
}
大约 8 分钟