spring-aop切入点可以过滤注释和返回类型的组合吗


@Pointcut(Execution(@com.annotions.MyAnnotation void *(..))

如果我只想用@MyAnnotation建议方法,并且返回类型为void,这会是一个有效的切入点吗?

不,您的切入点会因为几个原因而无效,主要是因为您无法在实际应用程序中测试它,而只是在这里发布了伪代码:

  1. @Pointcut注释参数需要用双引号括起来,因为它是String
  2. 缺少一个右括号)
  3. 关键字execution必须用小写字符书写,您的关键字以大写字符开头

除此之外,也就是说,如果你这样写切入点,它将是正确的:

@Pointcut("execution(@com.annotions.MyAnnotation void *(..))")

作为一种选择,您可以将这两个需求分离为不同的切入点说明符,如下所示:

@Pointcut("execution(void *(..)) && @annotation(com.annotions.MyAnnotation)")

在这种情况下,它可能看起来有点长,但如果您的执行切入点更复杂,最好将注释切入点从中分离出来,以便使整个切入点更具可读性。

我认为阅读SpringAOP和AspectJ手册可能会对您有所帮助。祝你好运,不要放弃,如果你经常使用AOP语法,它会变得更容易。

最新更新