zoukankan      html  css  js  c++  java
  • 【springboot】org.aspectj.lang.ProceedingJoinPoint获取返回类型、参数名称/值等

    1、参数值

    Object[] args = joinPoint.getArgs();

     2、参数名称

    Signature signature = joinPoint.getSignature();
    if (signature instanceof MethodSignature) {
        MethodSignature methodSignature = (MethodSignature) signature;
        String[] properties = methodSignature.getParameterNames();
    }

    3、返回类型

    Signature signature = joinPoint.getSignature();
    if (signature instanceof MethodSignature) {
        MethodSignature methodSignature = (MethodSignature) signature;
        // 被切的方法
        Method method = methodSignature.getMethod();
        // 返回类型
        Class<?> methodReturnType = method.getReturnType();
        // 实例化
        Object o = methodReturnType.newInstance();
    }

    4、全限定类名

    Signature signature = joinPoint.getSignature();
    signature.getDeclaringTypeName()

    5、方法名

    Signature signature = joinPoint.getSignature();
    signature.getName()

    工具类方法

    /**
     * 获取方法和参数内容
     *
     * @param className 类名 非必填
     * @param mothodName 方法名 必填
     * @param properties 参数名称列表
     * @param agrs 参数列表
     * @return
     */
    public static String getMothodPropertion(String className, String mothodName, String[] properties, Object ... agrs) {
        StringBuilder sb = new StringBuilder();
        if(null != className) {
            sb.append("类名:[").append(className).append("],");
        }
        sb.append("方法:[").append(mothodName).append("]");
        if (null == agrs) {
            return sb.toString();
        }
        boolean flag = null != properties;
        int propertiesLength = properties.length;
        Object obj;
        for(int i = 0, length = agrs.length; i < length; i++) {
            obj = agrs[i];
            sb.append("
    参数索引:[").append(i).append("],");
            if (flag && i < propertiesLength) {
                sb.append("参数名称:[").append(properties[i]).append("],");
            }
            if(null == obj) {
                sb.append("为null");
                continue;
            }
            sb.append("类型:[").append(obj.getClass().getName()).append("],");
            if(obj instanceof Collection) {
                Collection collection = (Collection)obj;
                sb.append("长度:[").append(collection.size()).append("],内容:[").append(collection);
            } else if(obj instanceof Map) {
                Map map = (Map)obj;
                sb.append("长度:[").append(map.size()).append("],内容:[").append(map);
            } else if(obj instanceof Object[]) {
                Object[] objects = (Object[])obj;
                sb.append("长度:[").append(objects.length).append("],内容:[").append(Arrays.asList(objects));
            } else if(obj instanceof String) {
                sb.append("内容:[").append(obj);
            } else {
                sb.append("内容:[").append(String.valueOf(obj));
            }
            sb.append("]");
        }
        return sb.toString();
    }

    效果如下

  • 相关阅读:
    2016huasacm暑假集训训练四 递推_A
    2016huasacm暑假集训训练三 G
    2016huasacm暑假集训训练三 F
    今年暑假不AC
    Who's in the Middle
    The Suspects
    食物链
    抓牛问题
    士兵队列训练问题
    H
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/12530587.html
Copyright © 2011-2022 走看看