美好的一天开发者。
我刚开始学习AspectJ AOP风格。 请帮我。我正在尝试了解LTW(加载时间编织),因为我对AspectJ的嵌套方法调用更感兴趣,并且代码如下:
包pkg.aop.target;
public class AppOut {
public void methodOutside() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Invoking AppOut.methodOutside()");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
methodInside();
}
public void methodInside() {
System.out.println("Invoking AppOut.methodInside()");
}
public static void main(String[] args) {
new AppOut().methodOutside();
}
}
方面部分:
package pkg.aop.myaspect;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class MyAspect {
@Pointcut("call(* *.*(..))")
void anyCallToMethod() {
}
@Before("anyCallToMethod()")
public void beforeLogicAspect() {
System.out.println("Should invoke before every method from AppOut class.");
}
}
在我的JVM args中,我有:
-javaagent:C:\Users\Vadim\workspace\aspectjweaver-1.7.4.jar
当我运行时,我看不到任何运行方法调用建议之前,只看到我的方法消息。我做错了什么?
我的输出是:
Invoking AppOut.methodOutside()
Invoking AppOut.methodInside()
谢谢。
答案 0 :(得分:0)
将切入点更改为
call(* *(..))
答案 1 :(得分:0)
pointcut anyCallToMethod(): execution(public void *(..) ) ;