【发布时间】:2014-02-09 14:52:31
【问题描述】:
开发者们好日子。
我刚开始学习 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.");
}
}
在 Eclipse 的 JVM 参数中,我有:
-javaagent:C:\Users\Vadim\workspace\aspectjweaver-1.7.4.jar
当我运行时,我看不到任何运行前的方法调用建议,只看我的方法消息。我做错了什么??
我的输出是:
Invoking AppOut.methodOutside()
Invoking AppOut.methodInside()
谢谢。
【问题讨论】: