根据约束注释编织AspectJ方面

时间:2015-08-20 14:57:42

标签: java aspectj

我想写一个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表达这样的切入点?

1 个答案:

答案 0 :(得分:0)

这是一个与这种方法的调用相匹配的切入点:

@Pointcut("call(* *(.., @com.sample.NiceMessage (*), ..))")
public void pôintcutAnnotatedParam(JoinPoint jp) {
}

注意:如果您完全确定带注释的参数将是第一个(相应的最后一个)参数,那么您可以删除第一个(相应的最后一个)双点。 < / p>