Aspectj @Before 有效,但 @Pointcut 无效

Aspectj @Before works but @Pointcut does not

我在 spring 引导应用程序中有一个 aspectj 实现的简单示例,我正在尝试让每个不同的方法都起作用。

如果我使用下面的

  @Before("execution(* com.example.test.controllers.ProductController.deleteProduct(..))")
  public void specificInterception() {
    System.out.println("pointcut interception working");
  }

这工作正常,我可以看到 println

的控制台输出

但是,如果我使用

  @Pointcut("execution(* com.example.test.controllers.ProductController.deleteProduct(..))")
  public void specificInterception() {
    System.out.println("pointcut interception working");
  }

触发失败。为什么这不起作用?

@Pointcut 注释的方法本身不执行任何操作。它只允许您多次重复使用相同的表达式,而不必重新声明它。我什至不确定这样的方法的方法体是否会被调用

在您的情况下,您可以像这样使用切入点:

@Pointcut("execution(* com.example.test.controllers.ProductController.deleteProduct(..))")
public void specificPointcut() {}


@Before("specificPointcut()")
public void specificInterception() {
    System.out.println("pointcut interception working");
}