我定义了一个方面(在spring项目中),它应该在执行方法后被调用。
class Crap {
public void blah(){
//Do Something here
}
public void blah_internal(){
blah();
//Do Something else here
}
}
class MyAspect {
@After("execution(* Crap.blah(..))")
public void doSomething(JoinPoint joinPoint) {
System.out.println("Coming into the aspect");
//Some logic here
}
}
现在,如果我正常调用Crap.blah方法,则方面可以正常工作
new Crap().blah(); //Prints "Coming into the aspect"
但是如果我使用其他方法调用该方法,它就不起作用
new Crap().blah_internal(); //Prints nothing
这里出了什么问题?
答案 0 :(得分:0)
将切入点定义与其他asterix一起使用
@After("execution(* Crap.blah*(..))")
答案 1 :(得分:0)
您使用的是Spring自己的AOP实现吗?这是一个已知的限制,在同一个类中调用方法时不应用方面。
您可以通过将<aop:aspectj-autoproxy />
放入xml文件(并显然导入所需的aspectj依赖项)来切换到AspectJ。 Aspectj适用于您描绘的场景。