java – 用于指定多个包的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

但这种模式似乎不起作用.虽然指定了一个没有&&的单一模式条件有效.

有人可以说这个模式有什么问题吗?

谢谢,
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() {}

下面的等效内联表达式:

@pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..)) || execution(* aaa.bbb.ccc.eee.*.*(..))")
public void methodindddOrEeePackageInline() {}

有关详细信息,请参见此Spring AOP documentation页面.

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...