当我在一个对一个子类使用spring aop 自定义注解进行增强的过程遇到该子类重写了父类方法并且父类实现了接口,AOP切点失效问题
模拟结构
public interface Run {
public void runs();
}
public abstract class GrandFather {
public abstract void say();
}
public abstract class Parent extends GrandFather implements Run {
public abstract void test();
public void test2(){
System.out.println("父类方法");
}
}
@Component
public class Child extends Parent {
@OpenDefaultNameMark
public void test(){
System.out.println("Child");
}
@Override
@OpenDefaultNameMark
public void test2() {
System.out.println("子类方法");
}
@Override
@OpenDefaultNameMark
public void say() {
}
@Override
public void runs() {
// this.say();
}
}
当我删除Child 实现的接口方法是可以aop可以扫描到对应的子类
@Component
public class Child extends Parent {
@OpenDefaultNameMark
public void test(){
System.out.println("Child");
}
@Override
@OpenDefaultNameMark
public void test2() {
System.out.println("子类方法");
}
@Override
@OpenDefaultNameMark
public void say() {
}
// @Override
// public void runs() {
//// this.say();
//
// }
}
请问这种子类即实现了接口又覆盖了父类的方法, spring aop 会采用那种方式实现,出现上述问题的原因是什么?