2011-10-19 14 views
5

Volevo specificare un modello per l'aspetto aspect_ @Around che include più pacchetti.Aspetto aspetto per la specifica di più pacchetti

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

modello che ho usato:

@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 

Ma questo modello doesnt sembra funzionare. Anche se si specifica un modello singolo senza & & condizioni di lavoro.

Qualcuno può suggerire cosa non va con questo modello?

Grazie,
Gayatri

risposta

15

&& sta per logica AND. Quello che ti serve qui è un logico OR, che in 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() {} 

seguito espressione in linea equivalente:

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

Vedere questa pagina Spring AOP documentation per maggiori dettagli.

Problemi correlati