2011-12-08 14 views
10

Tôi đang sử dụng Aspect để ghi nhật ký các hoạt động trong ứng dụng dựa trên mvc mùa xuân của tôi. Tôi đang sử dụng các chú thích @controller để xác định mọi bộ điều khiển trong ứng dụng của mình. Tôi có hai bộ điều khiển khác nhau trong hai gói khác nhau nóiCách chỉ định một dấu chấm đơn cho nhiều gói

  • com.package1 chứa điều khiển 1 lớp, chúng ta hãy đặt tên cho nó là AController
  • com.package2 chứa lớp điều khiển 2, chúng ta hãy đặt tên cho nó là BController

Tôi có thể áp dụng khía cạnh cho một gói bộ điều khiển cụ thể bằng cách sử dụng

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

Câu hỏi của tôi là cách chỉ định thêm một gói khác n biểu thức (* gói1. .. (..)) **.

Hiện tại tôi đang khai báo một điểm dừng riêng biệt cho mỗi gói và trong một khía cạnh riêng biệt aop:beforeaop:after mục nhập cho mỗi điểm cắt. Nhưng tôi nghĩ rằng đây nên là cách lý tưởng để xác định nhiều điểm cắt gói.

Trả lời

34

Bạn có thể sử dụng các toán tử logic:

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

Trong trường hợp bạn sử dụng Chú thích

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