AspectJ切面编程获取不到原始类型
来源:互联网 发布:mac电脑如何制作铃声 编辑:程序博客网 时间:2024/05/02 04:16
在完成一个自定义Redis注解缓存需求的时候,总是无法获取到方法参数类型是原始基本类型的方法,我使用的是如下方法:
String SpEL = "#uid";//获得方法参数Object[] args = proceedingJoinPoint.getArgs();//获得SpEL解析器ExpressionParser parser = new SpelExpressionParser();//获得SpEL上下文StandardEvaluationContext context = new StandardEvaluationContext();//把方法参数放入SpEL上下文中context.setVariable("uid", args[0]);//使用SpEL进行key的解析return parser.parseExpression(SpEL).getValue(context, String.class);
被环绕的方法是
public User getUserByUid(int uid);
执行总是报错NoSuchMethodException,把int改为Integer后就正常了,难到AspectJ返回的一直是包装过的类型?我想获得原始类型怎么办?
在Sebastian Kleinschmager写的《Aspect-Oriented Programming evaluated》一书中,4.1.4.2节中写到:
原来是我获取方法参数的姿势不对,正确的获取方法是
MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();Class[] parameterTypes = signature.getParameterTypes();System.out.println(parameterTypes[0].getName());System.out.println(parameterTypes[0].isPrimitive());
这个时候就能判断出Integer和int了,之后可以准确调用被增强的方法,而不会报错了。
阅读全文
0 0
- AspectJ切面编程获取不到原始类型
- Spring AOP切面编程 AspectJ
- AspectJ 切面获取参数名称和参数
- 使用Spring,Aspectj进行面向切面编程
- AOP-面向切面编程——AspectJ
- spring-aop---AspectJ注解式切面编程。
- 获取原始类型
- AspectJ 切面获取方法参数并拿到具体的值
- Spring面向切面编程--AOP,AspectJ,基于注解方式。
- Spring AOP与AspectJ 面向切面编程配置与注解
- 深入理解面向切面的编程AOP、AspectJ、Spring
- spring学习--面向切面编程AOP和AspectJ
- Spring支持的AspectJ注解式切面编程
- AspectJ教程--AOP面向切面编程框架(Android)
- SpringBoot 基于@AspectJ的切面编程(AOP)
- Spring进阶之路(11)-使用Aspectj切面配置和XML配置文件方式实现切面编程
- AspectJ Aop 面向切面
- 4.5 注入AspectJ切面
- SpringBoot JPA使用QueryDsl之gradle文件配置
- Please tell me who you are?
- Java内存管理
- 手撸一个简单的单链表
- apk反编译---smali语法
- AspectJ切面编程获取不到原始类型
- win7 系统下安装Tex Live过程,使用ISO镜像,不用区份32位系统或者64位系统
- 导航栏(nav)
- HDU
- Kubernetes之蓝绿部署
- Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建
- java网络编程--TCP程序设计
- ffmpeg在windows下使用MinGW+msys+VS2015编译(x86或64版本,链接x264库,VS2015中可debug调试)
- 机器学习第十二章