2011-10-19 4 views
5

複数のパッケージを含むaspectj @Aroundのパターンを指定したかったのです。 複数のパッケージを指定するAspectjの様子

@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 
をしかし、このパターンが動作するように見えるdoesntの:私が使用

Example : package 1 : aaa.bbb.ccc.ddd 
      package 2 : aaa.bbb.ccc.eee 
      package 3 : aaa.bbb.ccc.eee.fff 

パターン。 & &の条件を付けずに単一のパターンを指定することはできますが、

誰かがこのパターンで何が間違っていると示唆できますか?

おかげで、
Gayathri

答えて

15

&&は論理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ページを参照してください。

関連する問題