eclipse中的AspectJ LTW - Pointcut不适用于静态方法

时间:2016-02-05 07:03:25

标签: java aspectj static-methods

我有一个Aspect类,它定义了一个切点表达式,如下所示

@Pointcut("execution(* com.vg.pw.tasks.shared.*.executeTasks(..))")
public void myTraceCall() {}

其中executeTasks()方法是静态的。如果方法是非静态的,则每次调用executeTasks()时都会执行方法体。为什么我的切入点对静态方法无效?

我正在使用LTW而不是弹簧。

1 个答案:

答案 0 :(得分:1)

我刚尝试了你的切入点表达式,它可以同样适用于静态和非静态方法。我使用了AspectJ weaver 1.8.7。尝试将groupby-showWeaveInfo添加到您的aop.xml以获取有关LTW的调试信息。

-verbose

它应该在stderr上给你输出类似于:

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver options="-showWeaveInfo -verbose">
        <include within="q35218146..*" />
    </weaver>
    <aspects>
        <aspect name="q35218146.Aspect35218146"/>
    </aspects>
</aspectj>