用于截取已注释字段的截取的切入点

时间:2014-04-17 12:49:27

标签: java aspectj

我正在编写一个简单的审计框架,它允许我审计使用@Audit注释注释的类的字段。

可能的注释示例

class User {

    @Audit
    private String phoneNumber;

    private String name;

    @Audit
    public getName(){
        return name;
    };

    public setName(String name){
        this.name=name;
    }
}

到目前为止,我只能定义一个简单的切入点,用于监视使用@Audit注释注释的setter的调用:

@Pointcut("call(* @Audit set*(*))")

切入点看起来如何监视上面示例中注释的字段的分配?

1 个答案:

答案 0 :(得分:1)

不幸的是,目前是not possible with SpringAOP

  

Spring AOP目前仅支持方法执行连接点   (建议在Spring bean上执行方法)。领域   拦截没有实施,虽然支持现场   可以在不破坏核心Spring AOP API的情况下添加拦截。   如果您需要建议现场访问和更新连接点,请考虑a   像AspectJ这样的语言。

如果您要使用AspectJ,可以使用set(FieldPattern)切入点。 The AspectJTM 5 Development Kit Developer's Notebook

中有一些例子

set(@Audit * *)似乎有效,至于set(* @Audit * . *) - 我不确定,也许AspectJ将第一个通配符识别为字段修饰符,但根据docs第一个元素是注释,第二个是修饰符... < / p>