加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

读写切换切面

发布时间:2020-12-16 07:20:08 所属栏目:asp.Net 来源:网络整理
导读:#taskUser读taskuser.read =0 #taskUser写taskuser.write =1 #taskUserData读taskuserdata.read =1 #taskUserData写taskuserdata.write =1 ? ? @Aspect@Component public class TaskUserDaoMapperAspect { private static final Logger logger = LoggerFacto
#taskUser读
taskuser.read=0
#taskUser写
taskuser.write=1
#taskUserData读
taskuserdata.read=1
#taskUserData写
taskuserdata.write=1

?

?

@Aspect
@Component
public class TaskUserDaoMapperAspect {
    private static final Logger logger = LoggerFactory.getLogger(TaskUserDaoMapperAspect.class);
    private static final List<String> readList = Lists.newArrayList("find","poll");
    private static final List<String> writeList = Lists.newArrayList("insert","update");

    @Resource
    private TaskUserDataMapper taskUserDataMapper;

    @Resource
    private ConfigService configService;

    @Around("execution(* cn.hello.dal.mapper.TaskUserMapper.*(..))")
    public Object around(ProceedingJoinPoint pjp) {
        Object result = null;
        try {
            String methodName = pjp.getSignature().getName();
            logger.info("TaskUserMapper {} {} invoked",methodName,pjp.getArgs());
            if(readList.contains(methodName)){
                if(configService.isReadTaskUser()){
                    result = pjp.proceed();
                } else if(configService.isReadTaskUserData()){
                    result = invokeTaskUserDaoMapper(pjp);
                }
            } else if(writeList.contains(methodName)){

                if(configService.isWriteTaskUser()){
                    result = pjp.proceed();
                }
                if(configService.isWriteTaskUserData()){
                    result = invokeTaskUserDaoMapper(pjp);
                }
            } else {
                logger.error("unknown TaskUserMapper method {}",methodName);
                result = pjp.proceed();
            }
        } catch (OctopusException e) {
            throw e;
        } catch (Throwable e) {
            logger.error("[email?protected]",e);
            throw new DalException("DAL ERROR",e);
        }
        return result;
    }

    private Object invokeTaskUserDaoMapper(ProceedingJoinPoint pjp) throws NoSuchMethodException,IllegalAccessException,InvocationTargetException {
        String methodName = pjp.getSignature().getName();
        Class[] parameterTypes = ((MethodSignature)pjp.getSignature()).getMethod().getParameterTypes();
        Method method = TaskUserDataMapper.class.getMethod(methodName,parameterTypes);
        Object result = method.invoke(taskUserDataMapper,pjp.getArgs());
        return result;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读