• 从aop中获取被拦截方法中的参数


    @Aspect
    public class CacheManager {

    }


    @Before("execution(* com.aliexpress.social.game.cointree.cointree.gateway.application.*.*(..))")
    public void migrateCheck(JoinPoint joinPoint) {
    String userId = getUserIdFromAop(jointPoint);
    }

    //从拦截的参数中获取用户id
    private String getUserIdFromAop(JoinPoint joinPoint){
    //https://www.cnblogs.com/yln20170705/p/10511743.html

    //类名
    String clazzName = joinPoint.getTarget().getClass().getName();
    MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    //方法名
    String methodName = methodSignature.getName();
    //参数名数组
    String[] parameters = methodSignature.getParameterNames();
    //参数值
    Object[] args = joinPoint.getArgs();

    //获取参数名对应数组下标
    RequestInfoDTO infoDTO = null;
    String userId = null;

    //infoDTO是被拦截的发方法的参数名,例如:plant(RequestInfoDTO infoDTO,Long cropId)
    int paramIndex = ArrayUtils.indexOf(parameters,"infoDTO");
    if (paramIndex != -1){
    //参数info在方法列表中,位于第一个位置
    infoDTO = (RequestInfoDTO)args[0];
    userId = infoDTO.getUserId();

    }
    log.info("getUserIdFromAop clazzName = {} methodName = {} parameters = {} args = {} userId = {} ",
    new Object[] {clazzName, methodName, JSON.toJSONString(parameters), JSON.toJSONString(args), userId});

    return userId;

    }

  • 相关阅读:
    quotaon
    quotacheck
    quota
    query_module
    数据库连接驱动
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 76 最小覆盖子串
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
    Java实现 LeetCode 74 搜索二维矩阵
  • 原文地址:https://www.cnblogs.com/ctaixw/p/13210571.html
Copyright © 2020-2023  润新知