Java AOP获取参数怎么解析

joinPoint.getArgs()获得一个数组,里面的数据类型如下,我要如何解析拿到token

img

String token = ((Map<String,Object>)args[1]).get("token").toString();

啥都不能确定就遍历所有参数

Object[] args = joinPoint.getArgs();
        String token = null;
        for (Object arg : args) {
            if(arg instanceof Map){
                Map map = (Map)arg;
                 token = (String) map.get("token");
                if(token != null){
                    break;
                }
            }
        }
        if(token == null){
            // 参数里面没有token
        }


把args[1]强转成Map类型,然后通过get("token")就可以获取

写一个循环遍及数组,取下标为1的,得到一个map,这时候通过键取值

1:有token的参数添加注解,直接定位到对应的参数上
2:如果是json请求,springmvc提供了RequestBodyAdvice.afterBodyRead接口,允许你读取json后自行操作这个对象
3:如果是表单,url,header这种方式传递参数,直接request.getparam去获取,不依靠controller参数绑定
4:上面都不行,那就只能反射一个个的去找了

将相同的事情统一拦截到一处进行处理,这就是AOP的核心思想。——阿里巴巴淘系技术