java - Aspectj 切面指定多个包

标签 java spring aspectj

我想为 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/

相关文章:

java - 使用 spring Resttemplate 使用键值对

spring - 错误: Maven2RepositoryLayoutFactory: Unsupported repository layout legacy

java - JUnit 测试一起运行时失败,但单独运行时通过

java - 在 Eclipse 项目中混合使用 AspectJ 和 Scala

java - Spring AOP中获取拦截方法的Caller

java - 在 Scanner.useDelimiter() 中使用正则表达式时出现额外的空白

java - 我的意图错误来自哪里?

java - Angular + Spring,$http 和 $location 获取项目名称

java - 如何解决在 Debian 中安装的 netbeans 中缺少服务器的问题?

java - @Aspect 与 RMI