我有两个注释@LookAtThisMethod
和@LookAtThisParameter
,如果我使用@LookAtThisMethod
对方法进行切入,我怎么能提取用{{1}注释的所述方法的参数}?
例如:
@LookAtThisParameter
答案 0 :(得分:39)
我将此other answer的解决方案建模为一个不同但相似的问题。
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String methodName = signature.getMethod().getName();
Class<?>[] parameterTypes = signature.getMethod().getParameterTypes();
Annotation[][] annotations = joinPoint.getTarget().getClass().getMethod(methodName,parameterTypes).getParameterAnnotations();
我必须通过目标类的原因是因为被注释的类是接口的实现,因此signature.getMethod().getParameterAnnotations()
返回null。
答案 1 :(得分:3)
final String methodName = joinPoint.getSignature().getName();
final MethodSignature methodSignature = (MethodSignature) joinPoint
.getSignature();
Method method = methodSignature.getMethod();
GuiAudit annotation = null;
if (method.getDeclaringClass().isInterface()) {
method = joinPoint.getTarget().getClass()
.getDeclaredMethod(methodName, method.getParameterTypes());
annotation = method.getAnnotation(GuiAudit.class);
}
此代码涵盖Method属于接口
的情况