【发布时间】:2014-07-08 01:37:20
【问题描述】:
我正在尝试编写一个切入点,它将拦截带注释成员的 getter。
public class MyClass {
private String volume;
@MyAttribute
private Validity validity;
public void setValidity( Validity obj ){
validity = obj;
}
public Validity getValidity(){
return validity;
}
}
有没有办法编写一个切入点,该切入点将拦截所有基于validity 被@MyAttribute 注释的getValidity() 调用?换种说法,我希望为使用 @MyAttribute 注释的成员字段的任何 getter 创建一个切入点。
一个简单的 getter 切入点可以建议任何 getter 方法:
pointcut embeddedGetter() : execution( public * com.ia.domain..get*());
但这不会指定它正在获取的字段必须被注释。如果我在public 前面加上一个修饰符,它将指定必须对getter 方法进行注释,但事实并非如此。
这是否可行?
【问题讨论】:
-
应该有一个
@annotation切入点指示符,您可以使用通配符表达式作为方法的名称(及其返回类型)。 -
@SotiriosDelimanolis 但是如果我在 getter 上创建我的切入点,我如何将它与字段上的注释联系起来?任何注释匹配都将基于 getter 的注释 - 而不是字段。
-
哦,我错过了那部分。我以为吸气剂被注释了。我认为您不能将方法与字段相关联。