我做了一个注解(@MethodLogger),并在上面写了一个方面,基本上记录方法的时间并保存它,所以在任何我做了注解的方法上,它都工作得很好,但在一个特殊的用例中,我需要监视一个通知本身:
例如:
@MethodLogger
@Around("some function specified")
public Object method(ProceedingJoinPoint pjp) throws Throwable{
// code here
}
但是这个东西不起作用,它从来不调用我的注解方面。
1条答案
按热度按时间rkue9o1l1#
这在Spring AOP中不起作用,如下所示:
用其他方面建议其他方面?
在Spring AOP中,方面本身不可能成为其他方面通知的目标,类上的
@Aspect
注解将其标记为方面,因此将其排除在自动代理之外。如果你想这样做,你需要在Spring中通过LTW激活完整的AspectJ。然后如果你知道通知的方法名,你可以直接定位通知。如果你通常想限制通知执行的切入点匹配,或者通过
!adviceexecution()
排除后者的匹配,甚至有一个特殊的切入点指示符adviceexecution()
。更多细节请查看AspectJ文档。