joinPoint.getArgs()获得一个数组,里面的数据类型如下,我要如何解析拿到token
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的核心思想。——阿里巴巴淘系技术