Java 用于指定多个包的Aspectj特性
我想为aspectj@Abround aspect指定一个包含多个包的模式Java 用于指定多个包的Aspectj特性,java,spring,aspectj,Java,Spring,Aspectj,我想为aspectj@Abround aspect指定一个包含多个包的模式 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
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
但这种模式似乎不起作用。尽管在没有&&condition的情况下指定单个模式是可行的
有人能指出这种模式有什么问题吗
谢谢,Gayathri
&&
代表逻辑和
。这里需要的是一个逻辑的或
,在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() {}
有关更多详细信息,请参阅本页