问题描述
写了个切面,对方法上含有指定注解的方法进行拦截。
运行时发现,如果一个子类A继承了抽象父类B,并实现了父类的抽象方法,在子类的重写方法上加上指定注解,却发现这个方法在调用时不能被拦截。
哪位能给解释下,以及解决办法?
相关代码
// 注解
public @interface Profiling {
}
// 父类
public class B {
public abstract void foo();
}
// 子类
public class A extent B {
// 加上了Profiling注解,想要此方法被拦截,但实际未被拦截
@Profiling
@Override
public void foo() {
// do something
}
}
// 定义的切面
public class Aspect {
@Pointcut("@annotation(com.base.Profiling)")
private void pointCut(){
}
@Around("pointCut()")
public Object around(ProceedingJoinPoint pjp) {
// do something
}
}
不清楚题主的配置文件是什么。题主可以这么去检查:
1、
Aspect
类需要被Spring管理,并且要被标记为@org.aspectj.lang.annotation.Aspect
。2、
A
类需要被Spring管理。3、
@Around
注解的处理逻辑应该是: