从下面的前一个问题( AspectJ的-注释的存在在连接点的表达不认可 ),
我的目标:一方面,我希望能够提取/从匹配函数检索所有注释参数,不管有多少。 (然后应用上的一些治疗,但它不是这个问题的范围)
所以,就目前而言,这是我做了什么(不工作):
@Before("execution (* org.xx.xx.xx..*.*(@org.xx.xx.xx.xx.xx.Standardized (*),..))")
public void standardize(JoinPoint jp) throws Throwable {
Object[] myArgs = jp.getArgs();
getLogger().info("Here: arg length=" + myArgs.length);
// Roll on join point arguments
for (Object myParam : myArgs) {
getLogger().info(
"In argument with " + myParam.getClass().getAnnotations().length
+ " declaread annotations");
getLogger().info("Class name is " + myParam.getClass().getName());
// Get only the one matching the expected @Standardized annotation
if (myParam.getClass().getAnnotation(Standardized.class) != null) {
getLogger().info("Found parameter annotated with @Standardized");
standardizeData(myParam.getClass().getAnnotation(Standardized.class), myParam);
}
}
}
这是由咨询匹配的代码:
public boolean insertLog(@Standardized(type = StandardizedData.CLIPON) CliponStat theStat) {
// ...
}
和JUnit测试所产生的痕迹:
INFO: ICI: arg lenght=1
INFO: In argument with 0 declaread annotations
看起来它不检测注释
所以我的问题是:如何检测具有特定注释(S)的参数?
是否有人有一个想法,怎么办呢?
在此先感谢您的帮助。
问候。
编辑:我发现这个线程切入点的匹配带注释参数的方法 ,同样的事情讨论,并应用于给定的解决方案,但它不工作..