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

时间:2018-07-08 20:22:42

标签: java aspectj spring-aop

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

例如:

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


// code here

}

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

1 个答案:

答案 0 :(得分:0)

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

  

建议其他方面?

     

在Spring AOP中,不可能使方面本身成为其他方面的建议目标。类上的@Aspect注释将其标记为一个方面,因此将其从自动代理中排除。

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