Spring AOP AspectJ Pointcut 表達式例子

主要來源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with-examples/java

1. 方法標籤匹配方式spring

假設定義了接口EmployeeManager接口。express

1)code

execution(* com.howtodoinjava.EmployeeManager.*( .. ))

  以上切入點表達式能夠匹配EmployeeManger接口中全部的方法。blog

2)繼承

當切面方法和EmployeeManager接口在相同的包內,若是切入點表達式匹配全部全部方法,則表達式能夠改爲:接口

execution(* EmployeeManager.*( .. ))

3)匹配EmployeeManager接口的全部public方法。it

execution(public * EmployeeManager.*(..))

4) 匹配EmployeeManager接口中權限爲public並返回類型爲EmployeeDTO的全部方法。io

execution(public EmployeeDTO EmployeeManager.*(..))

5) 匹配EmployeeManager接口中權限爲public並返回類型爲EmployeeDTO,第一個參數爲EmployeeDTO類型的全部方法。class

 
execution(publicEmployeeDTO EmployeeManager.*(EmployeeDTO, ..))

6) 匹配EmployeeManager接口中權限爲public、返回類型爲EmployeeDTO,參數明肯定義爲EmployeeDTO,Integer的全部方法。

execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, Integer))

2. 類型標籤匹配模式

1)匹配在com.howtodoinjava包下全部類型中全部的方法。

within(com.howtodoinjava.*)

2)匹配在com.howtodoinjava包以及其子包下全部類型中全部的方法。

within(com.howtodoinjava..*)

3)匹配其餘包一個類下的全部方法。

within(com.howtodoinjava.EmployeeManagerImpl)

4)匹配同一個包下一個類下的全部方法。

within(EmployeeManagerImpl)

5)匹配一個接口下的全部繼承者的全部方法。

within(EmployeeManagerImpl+)

3. bean名字匹配模式

匹配全部以Manager結尾的beans中的全部方法。

bean(*Manager)

4. 切入點表達式拼接

在AspectJ中,切入點表達式能夠經過&&,||,!等操做符進行拼接。

bean(*Manager) || bean(*DAO)

 上述這個例子表示匹配以Manager結尾或者以DAO結尾的beans中全部的方法。

相關文章
相關標籤/搜索