我可以在 aop java 中声明围绕建议本身的建议吗?

Can I declare advice for surrounding an advice itself in aop java?

我做了一个注释(@MethodLogger)并在上面写了一个方面,它基本上记录了方法的时间并继续存储它。所以在我放置该注释的任何方法上它都可以正常工作 但在一个特殊的用例中,我需要监控一个建议本身:

例如:

@MethodLogger
@Around("some function specified")
public Object method(ProceedingJoinPoint pjp) throws Throwable{


// code here

}

但是这个东西不行。它从不调用我的注释方面。

这在 Spring AOP 中不起作用,documented here:

Advising aspects with other aspects?

In Spring AOP, it is not possible to have aspects themselves be the target of advice from other aspects. The @Aspect annotation on a class marks it as an aspect, and hence excludes it from auto-proxying.

如果要执行此操作,您需要在 Spring 中激活完整的 AspectJ via LTW。如果您知道它们的方法名称,那么您可以直接定位建议。如果您通常希望将切入点匹配限制为建议执行或通过 !adviceexecution() 从匹配中排除后者,甚至还有一个特殊的切入点指示符 adviceexecution()。有关详细信息,请查看 AspectJ 文档。