• 【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();
    }

    效果如下

  • 相关阅读:
    python读取csv文件、excel文件并封装成dict类型的list,直接看代码
    利用Python获取cookie的方法,相比java代码简便不少
    关于appium操作真机打开app之后无法定位页面元素的问题的解决办法
    关于做移动端ui自动化测试使用PC代理网络会出现的问题
    接口测试面试问题总结-转载
    接口测试3-参数关联接口(从上一个接口中获取数据,访问幼儿园服务器接口无session)
    接口测试2-接口测试 get post请求
    HTTP协议
    接口测试1-概论
    python视频学习笔记8(函数返回值和参数进阶)
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/12530587.html
Copyright © 2020-2023  润新知