我想写一个AspectJ方面来保护我们的Java类的所有具有javax验证约束的方法。即对于以下代码
@Target({METHOD})
@Retention(RUNTIME)
@Constraint
public @interface NiceMessage {
}
public class Sample {
void doSomething(@NiceMessage String message) {
}
void doSomethingElse(String message) {
}
}
a'之前'切入点应该用于“doSomething”。方法,但不适用于' doSomethingElse'方法。因此,切入点必须应用于包含至少一个带有注释的参数的所有方法,该注释本身具有@Constraint注释。
如何用AspectJ表达这样的切入点?
答案 0 :(得分:0)
这是一个与这种方法的调用相匹配的切入点:
@Pointcut("call(* *(.., @com.sample.NiceMessage (*), ..))")
public void pôintcutAnnotatedParam(JoinPoint jp) {
}
注意:如果您完全确定带注释的参数将是第一个(相应的最后一个)参数,那么您可以删除第一个(相应的最后一个)双点。 < / p>