2016-02-05 80 views
0

工作我有一个方面类,它定义一个点切割表达如下的AspectJ LTW在eclipse - 切入点不与静态方法

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

其中executeTasks()方法是静态的。如果方法设置为非静态,则方法体将在每次调用executeTasks()时执行。为什么我的切入点对静态方法不起作用?

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

回答

1

我刚刚试过了你的切入点表达式,它在静态方法和非静态方法上都能正常工作。我使用了AspectJ weaver 1.8.7。尝试将-showWeaveInfo-verbose添加到您的aop.xml以获取LTW上的调试信息。

<!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> 

它应该给你输出做类似的标准错误:

[[email protected]] weaveinfo Join point 'method-execution(void q35218146. 
Test35218146.executeTasks())' in Type 'q35218146.Test35218146' (Test35218146.java:6) 
advised by before advice from 'q35218146.Aspect35218146' (Aspect35218146.java) 
+0

@Kris:我同意,它有两个静态和非静态工作,除非你也改变了其他因素,如(子)包名称或方法可见性。如果没有,请显示可重复使用的[SSCCE](http://sscce.org/)。 – kriegaex

+0

忘记将“-verbose”添加到织布工选项。我编辑了我的答案以包含该选项。 –