问题描述
我想定义切入点以匹配两种方法:
我尝试了以下操作:
@Before("execution (* org.mypackage.Foo.update*(..) ) && execution(* org.mypackage.Foo.delete*(..) )")
public void verify()
{
//verify if user has permission to modify...
}
它不起作用。当我调用Foo.update *()方法或Foo.delete *()方法时,不会调用verify()。
我应该如何更改?
解决方法
有2个选项可以匹配切入点表达式中的模式。切入点表达式可以是对命名切入点的简单引用,也可以是就地声明的切入点表达式。
- 通过为各个切点创建单独的方法。并使用该方法名称作为@Before建议中的参考。
@Pointcut("execution(* org.mypackage.Foo.update*(..))")
private void fooUpdate() {}
@Pointcut("execution(* org.mypackage.Foo.delete*(..))")
private void fooDelete() {}
@Before("fooUpdate() || fooDelete()")
public void verify() {
// verify if user has permission to modify...
}
- 直接在适当位置声明切入点表达式。
@Before("execution(* org.mypackage.Foo.update*(..)) || execution(* org.mypackage.Foo.delete*(..))")
public void verify() {
// verify if user has permission to modify...
}
,
在表达式中将&&
更改为||
。