在 avice 中,如何获取建议方法的参数'type parameter'



使用Spring AOP,我正在编写一个带有around建议的方面,该方面拦截任何用@MyAnnotation注释的方法。假设截获的方法声明如下,

@MyAnnotation
public String someMethod(ArrayList<Integer> arrList) {...}

在建议方法中,我想得到第一个参数,即arrList,具有类型ArrayList和类型参数Integer的信息。

我试着通过做这个来回答这个问题

@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

试试这个:

@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]);
    ...
}

相关内容

  • 没有找到相关文章

最新更新