我正在尝试编写一个切入点,该切入点将针对标记有某个注释的每个方法进行命中,但标记为另一个注释的方法除外。 但以下情况不起作用:
<aop:aspect ref="...">
<aop:before method="execute" pointcut="@annotation(MyAnnotation1)
and not @annotation(MyAnnotation2)"/>
</aop:aspect>
请你告诉我我做错了什么?..
答案 0 :(得分:0)
组合切入点子表达式时,
&&
在XML中很难处理 文档,因此可以使用关键字and
,or
和not
代替 分别为&&
,||
和!
。
但是,不允许使用否定绑定参数。如果你说它不存在,那么什么值将作为参数传递?
将其更改为
<aop:before method="execute" pointcut="@annotation(MyAnnotation1)
and not @annotation(com.example.MyAnnotationName)"/>
所以MyAnnotation1
可以引用一个参数,但另一个则不能。因此,您需要指定注释类型的完全限定名称。相应的切入点看起来像
//@Pointcut(value = "@annotation(MyAnnotation1) && !@annotation(com.example.MyAnnotationName)")
public void yesNotNo(MyAnnotation1 MyAnnotation1) {
}