使用Spring AOP,我正在编写一个带有周围建议的Aspect,它可以截取任何使用@MyAnnotation
注释的方法。假设截获的方法声明如下,
@MyAnnotation
public String someMethod(ArrayList<Integer> arrList) {...}
在通知方法中,我想知道第一个参数(即arrList
)的类型ArrayList
的类型参数为Integer
。
我尝试过这样做this question
@Around("@annotation(MyAnnotation)")
public Object advice(ProceedingJoinPoint pjp) {
Method method = ((MethodSignature) pjp.getSignature()).getMethod();
Class<?>[] paramsClass = method.getParameterTypes();
logger.info(((ParameterizedType) paramsClass[0].getGenericSuperclass()).getActualTypeArguments()[0])
...
}
但注销的只是E
。我该怎么做才能打印java.lang.Integer
?
答案 0 :(得分:1)
试试这个:
@Around("@annotation(MyAnnotation)")
public Object advice(ProceedingJoinPoint pjp) throws Throwable {
Method method = ((MethodSignature) pjp.getSignature()).getMethod();
Type[] genericParamsClass = method.getGenericParameterTypes();
logger.info(((ParameterizedType) genericParamsClass[0]).getActualTypeArguments()[0]);
...
}