2011-12-08 8 views
10

Używam Aspect do rejestrowania czynności w mojej aplikacji na bazie sprężyny mvc. Używam adnotacji @controller do definiowania dowolnego kontrolera w mojej aplikacji. Mam dwie inny kontroler w dwóch różnych pakietu powiedzeniaJak określić pojedyncze cięcie punktowe dla wielu paczek

  • com.package1 zawiera kontroler 1 klasa, nazwijmy go jako AController
  • com.package2 zawiera kontroler 2 klasę, nazwijmy go jako BController

jestem w stanie zastosować się do jednego konkretnego aspektu pakietu sterowników za pomocą

<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" /> 

Moje pytanie brzmi: jak określić więcej niż jeden pakiet i inny n wyrażenie (* pakiet1. .. (..)) **.

W tej chwili deklaruję jeden oddzielny skrót dla każdej paczki i jeden aspekt osobnego wpisu aop:before i i aop:after dla każdego cięcia punktowego. Ale myślę, że powinien to być idealny sposób na zdefiniowanie wielu pakietów punktów.

Odpowiedz

34

Można używać operatorów logicznych:

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

W przypadku korzystania adnotacje

@Pointcut("within(com.package1..*) || within(com.package2..*)") 
Powiązane problemy