我正在尝试编写一个切入点,该切入点将拦截带注释的成员的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方法:

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


但这并不会指定必须对要获取的字段进行注释。而且,如果我在public前面放置了一个修饰符,该修饰符指定必须对getter方法进行注释,事实并非如此。

这甚至可行吗?

最佳答案

在玩完AspectJ之后,我终于重新发现了我想要的连接点:

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


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

关于java - 有没有一种方法可以将获取方法的切入点写入带注释的字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24622434/

10-08 23:34