码迷,mamicode.com
首页 > 其他好文 > 详细

读写切换切面

时间:2019-05-05 10:16:44      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:error   array   spec   factor   war   nal   lex   rgs   chm   

#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("failed@AroundDaoAspect.around", 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;
    }
}

 

读写切换切面

标签:error   array   spec   factor   war   nal   lex   rgs   chm   

原文地址:https://www.cnblogs.com/exmyth/p/10811474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!