我正在编写一个简单的审计框架,它允许我审计使用@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*(*))")
切入点看起来如何监视上面示例中注释的字段的分配?
答案 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>