1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package com.ruoyi.framework.aspectj;
- import java.lang.reflect.Method;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.Around;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Pointcut;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.core.annotation.Order;
- import org.springframework.stereotype.Component;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.framework.aspectj.lang.annotation.Ds;
- import com.ruoyi.framework.datasource.DynamicDataSourceContextHolder;
- /**
- * 多数据源处理
- *
- * @author ruoyi
- */
- @Aspect
- @Order(1)
- @Component
- public class DsAspect
- {
- protected Logger logger = LoggerFactory.getLogger(getClass());
- @Pointcut("@annotation(com.ruoyi.framework.aspectj.lang.annotation.Ds)")
- public void dsPointCut()
- {
- }
- @Around("dsPointCut()")
- public Object around(ProceedingJoinPoint point) throws Throwable
- {
- MethodSignature signature = (MethodSignature) point.getSignature();
- Method method = signature.getMethod();
- Ds dataSource = method.getAnnotation(Ds.class);
- if (StringUtils.isNotNull(dataSource))
- {
- DynamicDataSourceContextHolder.setDateSoureType(dataSource.value().name());
- }
- try
- {
- return point.proceed();
- }
- finally
- {
- // 销毁数据源 在执行方法之后
- DynamicDataSourceContextHolder.clearDateSoureType();
- }
- }
- }
|