如何解决spring aop切入点可以过滤注释和返回类型的组合吗?
@Pointcut(Execution(@com.annotions.MyAnnotation void *(..))
如果我只希望使用@MyAnnotation来建议方法并且返回类型为void,这将是一个有效的切入点吗?
解决方法
不,您的切入点将由于以下几个原因而无效,主要是因为您无法在真实的应用程序中对其进行测试,而只是在此处发布了伪代码:
-
@Pointcut
注释参数必须用双引号引起来,因为它是String
。 - 缺少一个右括号
)
。 - 关键字
execution
必须使用小写字母,您必须以大写字母开头。
除此之外,也就是说,如果您这样编写切入点,那将是正确的:
@Pointcut("execution(@com.annotions.MyAnnotation void *(..))")
作为替代方案,您可以将两个需求分成不同的切入点说明符,如下所示:
@Pointcut("execution(void *(..)) && @annotation(com.annotions.MyAnnotation)")
在这种情况下,它看起来可能有点冗长,但是如果您的执行切入点比较复杂,则最好将注释切入点与它分离开来,以使整个切入点更具可读性。
我认为阅读Spring AOP和AspectJ手册可能对您有所帮助。祝您好运,不要放弃,如果您更多地使用AOP语法,它将变得更加容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。