文章目錄
切入點表達式的細節
標準寫法
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(* *..*.*(..))
全通配寫法很少使用。