问题描述
最近有个需求,统计某个方法的调用次数,开始使用 Spring AOP 实现,后来发现当方法被内部调用时,切面逻辑将不会生效,直接上样例:
定义接口,包含方法 A,方法 B
public interface ISon {
void A();
void B();
}
定义接口实现,方法 B 调用方法 A
@Service
public class Son implements ISon {
@Override
public void A() {
System.out.println("method A");
}
@Override
public void B() {
System.out.println("method B");
A();
}
}
切点定义,对方法 A 进行增强
@Aspect
@Component
public class AspectDemo {
@Pointcut(value = "execution(* com.example.transactiondemo.aop.ISon.A(..))")
public void pointCut(){
}
@Before("pointCut()")
public void before(JoinPoint joinPoint){
System.out.println("before ");
}
@After("