Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有超级方法调用的继承方法的切入点_Java_Spring Boot_Aop_Aspectj_Pointcut - Fatal编程技术网

Java 具有超级方法调用的继承方法的切入点

Java 具有超级方法调用的继承方法的切入点,java,spring-boot,aop,aspectj,pointcut,Java,Spring Boot,Aop,Aspectj,Pointcut,我有以下课程 class A { public void someone() { helpMe(); } private void helpMe() { // do something here } } class B extends A { public void help() { super.someone(); } } class C extends A { public void me

我有以下课程

class A {
    public void someone() {
        helpMe();
    }
    private void helpMe() {
        // do something here
    }
}
class B extends A {
    public void help() {
        super.someone();
    }
}
class C extends A {
    public void me() {
        super.someone();
    }
}
所以每次调用
helpMe
方法时,我都想做一些事情
A.helpMe()
从未被显式调用。对
A.helpMe()
的所有方法调用都是通过
A.someone()
进行的,后者通过
B.help()
C.me()
进一步调用

helpMe
包含每个其他类都需要的通用实现

我试过的切入点

execution(* A.helpMe(..)) // does not work
execution(* A+.helpMe(..)) // does not work
execution(* *.helpMe(..)) // does not work

execution(* A.*(..)) // does not work
execution(* B.someone(..)) // does not work
execution(* A+.*(..)) // forms a point cut for B.help() and C.me() only
execution(* *.*(..)) // forms a point cut for B.help() and C.me() only
execution(* B.*(..)) // forms a point cut for B.help() only
我在某个地方读到,
super
切入点是不允许的。如果是这样,有哪些有效的解决办法


我已经尝试使用
注释
获取
切入点,但它也不起作用

1如果有疑问,请始终返回到完全硬编码的切入点,然后再次向前工作:

execution(private void helpMe())
您确定您是,而不是vanilla Spring AOP(它不能建议私有方法)


供参考:

调用
连接点不捕获对非静态方法的超级调用


。。。这不适用于
执行

Spring AOP是通过代理应用的,内部方法调用不能被拦截。为此,您需要一个完整的AOP解决方案,如AspectJ,它可以是加载时编织,也可以是编译时编织。