2011-10-19 14 views
5

Chciałem określić wzorzec dla aspektj @ Aspekt aspektu obejmujący wiele pakietów.Format Aspectj do określania wielu pakietów

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

Wzór których użyłem:

@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 

Ale ten wzór robi wydaje się działać. Chociaż działa określanie pojedynczego wzorca bez warunku & &.

Czy ktoś może sugerować, co jest nie tak z tym wzorem?

Dzięki,
Gayathri

Odpowiedz

15

&& oznacza logicznego AND. To, czego potrzebujesz, to logiczne, OR, które w AspectJ to ||.

@Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..))") 
public void methodInDddPackage() {} 

@Pointcut("execution(* aaa.bbb.ccc.eee.*.*(..))") 
public void methodInEeePackage() {} 

@Pointcut("methodInDddPackage() || methodInEeePackage()") 
public void methodInDddOrEeePackage() {} 

Poniżej równoważnej ekspresji inline:

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

Zobacz ten Spring AOP documentation stronę po więcej szczegółów.

Powiązane problemy