我做了一个注解(@MethodLogger),并在上面写了一个方面,它基本上记录了方法的计时并继续存储它。因此,在我放置该注释的任何方法上,它都可以正常工作 但是在一个特殊的用例中,我需要监视建议本身:
例如:
@MethodLogger
@Around("some function specified")
public Object method(ProceedingJoinPoint pjp) throws Throwable{
// code here
}
但是这个东西不起作用。它从不调用我的注释方面。
答案 0 :(得分:0)
这在Spring AOP中不起作用,就像documented here:
建议其他方面?
在Spring AOP中,不可能使方面本身成为其他方面的建议目标。类上的
@Aspect
注释将其标记为一个方面,因此将其从自动代理中排除。
如果要执行此操作,则需要在Spring中激活完整的AspectJ via LTW。然后,如果您知道建议的方法名称,则可以直接将其作为目标。如果您通常希望将切入点匹配限制为建议执行或通过adviceexecution()
将切入点匹配排除在建议执行之外,甚至还有一个特殊的切入点指示符!adviceexecution()
。有关更多详细信息,请查看AspectJ文档。