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)")

在这种情况下,它看起来可能有点冗长,但是如果您的执行切入点比较复杂,则最好将注释切入点与它分离开来,以使整个切入点更具可读性。

我认为阅读Spring AOP和AspectJ手册可能对您有所帮助。祝您好运,不要放弃,如果您更多地使用AOP语法,它将变得更加容易。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...