2011-12-08 27 views
10

Estoy usando Aspect para actividades de registro en mi aplicación spring mvc based. Estoy usando @controller anotaciones para definir cualquier controlador en mi aplicación. Tengo dos controlador diferente en dos paquetes distintos decirCómo especificar un único punto de corte para varios paquetes

  • com.package1 contiene el controlador 1 clase, vamos a nombrar como AController
  • com.package2 contiene clase controlador 2, vamos a nombrar como BController

soy capaz de aplicar aspecto a un paquete particular de controladores mediante el uso de

<aop:config> 
    <aop:pointcut id="pointcut1" 
     expression="execution(* package1.*.*(..))" 
     id="policy1" /> 
    <aop:aspect ref="aspect1" order="1"> 
     <aop:before pointcut-ref="pointcut1" method="before" arg-names="joinPoint" /> 
     <aop:after-returning returning="returnValue" arg-names="joinPoint, returnValue" pointcut-ref="pointcut1" method="after" /> 
    </aop:aspect> 
</aop:config> 


<bean id="aspect1" class="com......aspectclass" /> 

Mi pregunta es cómo especificar más de un paquete diferente i n expresión (* paquete1. .. (..)) **.

Ahora estoy declarando un punto de corte por separado para cada paquete y en el aspecto uno por separado aop:before y aop:after entrada para cada punto de corte. Pero creo que esta debería ser la forma ideal de definir paquetes múltiples de corte de puntos.

Respuesta

34

Puede utilizar operadores booleanos:

expression="execution(* package1.*.*(..)) || execution(* package2.*.*(..))" 
6

En caso de que utilice Anotaciones

@Pointcut("within(com.package1..*) || within(com.package2..*)") 
Cuestiones relacionadas