DynamicDataSourceContextHolder.java 1.1 KB

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