0

我正在使用 AspectJ 将方面应用于包 org.apache.http、org.apache.http.entity、org.apache.http.impl、org.apache.http.io 和其他类似包下的类的方法。

我使用了以下方面,但未应用。

public pointcut capturehttp():within(org.apache.http..*) && (call(public * *(..)) || call(private * *(..)));
after():capturehttp()
{

    System.out.println("In test test test testy test http method set");

}

我还尝试按照Aspectj 方面的建议指定多个包,但它没有用。请向我建议我错在哪里?

4

1 回答 1

0

使用以下方面:

public aspect HttpCoreAspect {

    pointcut captureHttp(): within(com.my.pckg..*) && !within(HttpCoreAspect) 
        && (call(* org.apache.http..*.*(..)) || call(org.apache.http..*.new(..)));

    after(): captureHttp() {
        System.out.println("Apache HttpCore was invoked");
    }

}

上面的captureHttp()切入点将捕获对包org.apache.http或任何子包中的任何类型的方法或构造函数调用,这些调用是从包内的任何代码com.my.pckg或其任何子包中调用的,不包括从方面HttpCodeAspect本身进行的调用(如果您碰巧从您的after()建议中调用 HttpCore,我们不'不希望发生无限递归)。

于 2016-06-29T12:28:00.420 回答