spring aspectj around advice不适用于接口实现

dohp0rv5  于 2021-07-22  发布在  Java
关注(0)|答案(1)|浏览(335)

我有一个接口及其实现。

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不会直接从接口触发。它在接口实现中触发。

mtb9vblg

mtb9vblg1#

springaop在代理上工作。从methoda()调用methodb()称为自调用。spring aop将无法通知methoda()对methodb()的方法调用,因为它不会通过代理。
spring参考文档:理解aop代理。通读这一节,首先要理解的关键是,客户机代码在main(…)中

相关问题