有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Weave AspectJ方面依赖于约束注释

我想编写一个AspectJ方面来保护Java类中所有具有javax验证约束的方法。即,对于以下代码

@Target({METHOD})
@Retention(RUNTIME)
@Constraint
public @interface NiceMessage {
}

public class Sample {
  void doSomething(@NiceMessage String message) {
  }

  void doSomethingElse(String message) {
  }
}

“doSomething”方法应使用“before”切入点,但“doSomethingElse”方法不应使用“before”切入点。因此,切入点必须应用于包含至少一个参数的所有方法,并且注释本身具有@Constraint注释

这样的切入点如何用AspectJ表达


共 (1) 个答案

  1. # 1 楼答案

    下面是一个切入点,它将匹配对此类方法的调用:

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

    注意:如果您绝对确定带注释的参数将是第一个(resp.last)参数,那么您可以删除第一个(resp.last)双点