有没有办法将getter的切入点写入带注释的字段?

时间:2014-07-08 01:37:21

标签: java aop aspectj

我正在尝试编写一个切入点,用于拦截带注释成员的getter。

public class MyClass {

    private String volume;

    @MyAttribute
    private Validity validity;


    public void setValidity( Validity obj ){
        validity = obj;
    }

    public Validity getValidity(){
        return validity;
    }
}

有没有办法编写一个切入点,根据getValidity()注释validity来拦截对@MyAttribute的所有来电?换句话说,我希望为使用@MyAttribute注释的成员字段的任何getter创建一个切入点。

一个简单的getter切入点可以建议任何getter方法:

pointcut embeddedGetter() : execution( public * com.ia.domain..get*());

但是这不会指定必须对其获得的字段进行注释。如果我在public前放置一个修饰符,指定必须注释getter方法,情况并非如此。

这是否可行?

1 个答案:

答案 0 :(得分:1)

在玩了AspectJ之后,我终于重新发现了我想要的加入点:

pointcut embeddedGetter() : get( @MyAnnotation Validity *..* );

关键是不要使用execution切入点,而是使用get