gpt4 book ai didi

java - eclipse 中的 AspectJ LTW - 切入点不适用于静态方法

转载 作者:行者123 更新时间:2023-12-01 10:28:37 26 4
gpt4 key购买 nike

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

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

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

我使用 LTW 而不是 spring。

最佳答案

我刚刚尝试了您的切入点表达式,它可以在静态和非静态方法上正常工作。我使用 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>

它应该在 stderr 上为您提供与此类似的输出:

[AppClassLoader@14dad5dc] 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)

关于java - eclipse 中的 AspectJ LTW - 切入点不适用于静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com