我正在使用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的建议尝试了,但它没有用。 请告诉我我哪里错了?
答案 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,我们不希望发生无限递归)。