DataSourceAspect.java 813 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package com.happy.myDataSource;
  2. import org.apache.commons.lang3.StringUtils;
  3. import org.aspectj.lang.JoinPoint;
  4. public class DataSourceAspect {
  5. /**
  6. * 在进入service前执行
  7. *
  8. * @param point
  9. * 切面对象
  10. */
  11. public void before(JoinPoint point) {
  12. // 获取当前执行的方法名
  13. String methodName = point.getSignature().getName();
  14. if (isSlave(methodName)) {
  15. // 标记为读库
  16. DynamicDataSourceHolder.markSlave();
  17. } else {
  18. // 标记为写库
  19. DynamicDataSourceHolder.markMaster();
  20. }
  21. }
  22. /**
  23. * 判断是否为读库
  24. *
  25. * @param methodName
  26. * @return
  27. */
  28. private boolean isSlave(String methodName) {
  29. return StringUtils.startsWithAny(methodName, "query", "find", "get",
  30. "comb", "list", "export", "load");
  31. }
  32. }