2011-10-19 21 views
5

Tôi muốn chỉ định một mẫu cho khía cạnh aspectj @Around bao gồm nhiều gói.Khía cạnh Aspectj để chỉ định nhiều gói

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

mẫu mà tôi đã sử dụng:

@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 

Nhưng mô hình này doesnt có vẻ làm việc. Mặc dù chỉ định một mẫu đơn mà không có các điều kiện & & hoạt động.

Ai đó có thể đề xuất sai với mẫu này?

Cảm ơn,
Gayathri

Trả lời

15

&& là viết tắt của logic AND. Những gì bạn cần ở đây là hợp lý OR, trong AspectJ là ||.

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

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

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

Dưới biểu inline tương đương:

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

Xem này Spring AOP documentation trang để biết thêm chi tiết.

Các vấn đề liên quan