懒羊羊
2024-01-31 e57a8990ae56f657a59c435a0613c5f7a8728003
提交 | 用户 | 时间
e57a89 1 package com.jcdm.framework.datasource;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5
6 /**
7  * 数据源切换处理
8  * 
9  * @author jc
10  */
11 public class DynamicDataSourceContextHolder
12 {
13     public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);
14
15     /**
16      * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
17      * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
18      */
19     private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
20
21     /**
22      * 设置数据源的变量
23      */
24     public static void setDataSourceType(String dsType)
25     {
26         log.info("切换到{}数据源", dsType);
27         CONTEXT_HOLDER.set(dsType);
28     }
29
30     /**
31      * 获得数据源的变量
32      */
33     public static String getDataSourceType()
34     {
35         return CONTEXT_HOLDER.get();
36     }
37
38     /**
39      * 清空数据源变量
40      */
41     public static void clearDataSourceType()
42     {
43         CONTEXT_HOLDER.remove();
44     }
45 }