在包装和包装上应用方面

时间:2016-06-28 06:52:59

标签: aspectj aspects

我正在使用AspectJ在包org.apache.http,org.apache.http.entity,org.apache.http.impl,org.apache.http.io以及其他类似的方法中应用类方法的方面。< / p>

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

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 aspect for specifying multiple packages的建议尝试了,但它没有用。 请告诉我我哪里错了?

1 个答案:

答案 0 :(得分: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,我们不希望发生无限递归)。