2011-10-19 9 views
5

Quería especificar un patrón para aspect @ aspecto completo que incluye múltiples paquetes.Aspecto aspecto para especificar múltiples paquetes

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

patrón que utilicé:

@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 

Pero este patrón no se parece al trabajo. Aunque se especifica un patrón único sin & &, la condición funciona.

¿Alguien puede sugerir cuál es incorrecto con este patrón?

Gracias,
Gayathri

Respuesta

15

&& es sinónimo de lógica AND. Lo que necesita aquí es un OR lógico, que en AspectJ es ||.

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

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

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

A continuación equivalente expresión en línea:

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

Ver esta página Spring AOP documentation para más detalles.

Cuestiones relacionadas