切入點表達式的細節

切入點表達式的細節

標準寫法

execution(訪問修飾符 返回值類型 全限定類名.方法名(參數列表))
例:
execution(public com.test.service.UserServiceImpl.addUser(com.test.entity.User))

訪問修飾符可以省略

execution(public void com.test.service.UserServiceImpl.addUser(com.test.entity.User))

等價於

execution(void com.test.service.UserServiceImpl.addUser(com.test.entity.User))

使用通配符表示任意的返回值

execution(* com.test.service.UserServiceImpl.addUser(com.test.entity.User))

包名可以使用通配符

包名使用通配符表示,可以用來表示任意包,但是有幾級包名,寫幾個*.

execution(* *.*.*.UserServiceImpl.addUser(com.test.entity.User))

這個例子表示,任意三級包名下的UserServiceImpl類中,返回任意類型的,參數爲User類型的addUser方法。

表示任意包及其子包的通配符

使用*..表示任意包及其子包。

execution(* *..UserServiceImpl.addUser(com.test.entity.User))

這個例子表示,任意包下的UserServiceImpl類中,返回任意類型的,參數爲User類型的addUser方法。

之前的例子限定了包的級數,這裏的*..表示任意的包及其子包

類名使用通配符

execution(* *..*.addUser(com.test.entity.User))

這個例子表示任意包下的,任意類中參數爲User的addUser方法。

方法名可以使用通配符

execution(* *..*.*(com.test.entity.User))

這個例子表示任意包下的,任意類中的參數爲User的任意方法。

參數列表

普通類型:直接寫類型

execution(* *..*.*(boolean))

引用類型:全限定類名

execution(* *..*.*(com.test.entity.User))

使用通配符表示

execution(* *..*.*(*,*))

表示必須有任意類型的兩個參數的方法。

表示任意參數列表

execution(* *..*.*(..))

使用..表示任意的參數列表,可以沒有參數,也可以有任意多個參數。

全通配寫法:所有的方法都是切入點

execution(* *..*.*(..))

全通配寫法很少使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章