我想为 aspectj @Around 方面指定一个包含多个包的模式。
Example : package 1 : aaa.bbb.ccc.ddd
package 2 : aaa.bbb.ccc.eee
package 3 : aaa.bbb.ccc.eee.fff
我使用的模式:
@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
但这种模式似乎行不通。虽然在没有 && 条件的情况下指定单个模式是有效的。
有人可以建议这种模式有什么问题吗?
谢谢,
伽耶斯丽
最佳答案
&&
代表逻辑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() {}
下面的等效内联表达式:
@Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..)) || execution(* aaa.bbb.ccc.eee.*.*(..))")
public void methodInDddOrEeePackageInline() {}
查看此 Spring AOP documentation页面了解更多详情。
关于java - Aspectj 切面指定多个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819300/