我想为aspectj @Around方面指定一个包含多个包的模式.
Example : package 1 : aaa.bbb.ccc.ddd package 2 : aaa.bbb.ccc.eee package 3 : aaa.bbb.ccc.eee.fff
@H_301_8@我使用的模式:
@Around("execution(* aaa.bbb.ccc.ddd.*.*(..)) && execution(* aaa.bbb.ccc.eee..*.*(..))") i.e Intercept packages aaa.bbb.ccc.ddd,aaa.bbb.ccc.eee and any sub-package of aaa.bbb.ccc.eee
@H_301_8@但这种模式似乎不起作用.虽然指定了一个没有&&的单一模式条件有效.
有人可以说这个模式有什么问题吗?
谢谢,
Gayathri
最佳答案
&安培;&安培;代表逻辑AND.你需要的是一个逻辑OR,在AspectJ中是||.
@Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..))") public void methodInDddPackage() {} @Pointcut("execution(* aaa.bbb.ccc.eee.*.*(..))") public void methodInEeePackage() {} @Pointcut("methodInDddPackage() || methodInEeePackage()") public void methodInDddOrEeePackage() {}
@H_301_8@下面的等效内联表达式:
@Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..)) || execution(* aaa.bbb.ccc.eee.*.*(..))") public void methodInDddOrEeePackageInline() {}
@H_301_8@有关详细信息,请参见此Spring AOP documentation页面.