我有一个接口及其实现。
interface A{
String methodA();
String methodB();
}
public class Impl1 implements A{
@Override
public String methodA() {
methodB();
return "";
}
@Override
public String methodB() {
return "";
}
}
public class Impl2 implements A{
@Override
public String methodA() {
methodB();
return "";
}
@Override
public String methodB() {
return null;
}
}
当接口的任何实现执行methodb()时,我要截获的内容。
@Around("within(com.bla.bla.A+) && execution(* methodB(..))")
但这不起作用。当我移除执行部分时,它只在调用外部的方法时工作。如有任何意见,我们将不胜感激。
注意:methodb不会直接从接口触发。它在接口实现中触发。
1条答案
按热度按时间mtb9vblg1#
springaop在代理上工作。从methoda()调用methodb()称为自调用。spring aop将无法通知methoda()对methodb()的方法调用,因为它不会通过代理。
spring参考文档:理解aop代理。通读这一节,首先要理解的关键是,客户机代码在main(…)中