我在这个论坛上看了很多问题,但没有任何作用。
value
如何在执行建议时获取exceptionList
的{{1}}和@MyAnnotation
?
我使用的是Spring 4.0.6,AspectJ 1.7.4
答案 0 :(得分:0)
你已经快到了。可能。强>
您正在使用正确的方法来检索注释,因此您可以使用值。
你的问题 - 如果我解释简约问题描述(!)你只通过你的代码片段(!)中的注释正确提供 - 是(错误的)假设坚持一个数组System.out.println()类型Class将打印出它包含的类的名称。 它没有。而是打印有关引用的信息:
[Ljava.lang.Class;@15db9742
如果需要类的名称,则必须遍历该数组的元素并使用.getName(),. getSimpleName()或提供Class方法的其他名称之一。
有关如何打印数组元素的更多信息,请访问:
What's the simplest way to print a Java array?
当然,如果问题是你从注释字段中获取空值,那么整个答案可能完全是除了这一点。但是,由于您没有提供足够的问题描述("没有任何作用" 不是问题描述!),我们只能猜测您的问题是什么。
答案 1 :(得分:0)
解决方法是确保advice方法的参数名称与AspectJ表达式中的参数名称匹配。在我的例子中,建议方法应如下所示:
@Aspect
public class MyAspect {
@Around("@annotation(myAnnotation)")
public Object handle(ProceedingJoinPoint joinPoint, MyAnnotation myAnnotation) {
System.out.println(myAnnotation.exceptionList); // should print out TimeOutException
}
}