DynamicDataSourceContextHolder.java 1.1 KB

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