多数据源配置3

  1. 动态数据源决策
public class DynamicDataSource extends AbstractRoutingDataSource {

   
@Override
    protected Object determineCurrentLookupKey() {
       
String datasource = DataSourceContextHolder.getDbSource();
        System.out.println("使用数据源 {" + datasource + "}");
        return datasource;
    }
}

 

  1. 动态数据源设置、获取
public class DataSourceContextHolder {

   
//实际上就是开启多个线程,每个线程进行初始化一个数据源
    private static final ThreadLocal contextHolder = new ThreadLocal<>();
    /**
     *
设置数据源
    
* @param dbSourceEnum 枚举
    
*/
   
public static void setDbSource(DbSourceEnum dbSourceEnum) {
        contextHolder
.set(dbSourceEnum.getKey());
    }

   
/**
     *
取得当前数据源
    
* @return
    
*/
   
public static String getDbSource() {
       
return (String) contextHolder.get();
    }

   
/**
     *
清除上下文数据
    
*/
   
public static void clearDbSource() {
        contextHolder
.remove();
    }
}

 

posted @ 2021-11-07 21:11  yydssc  阅读(18)  评论(0)    收藏  举报