execution函數用於匹配方法執行的鏈接點,語法爲:函數
execution(方法修飾符(可選) 返回類型 方法名(參數) 異常模式(可選))繼承
參數部分容許使用通配符:io
* 匹配任意字符,但只能匹配一個元素擴展
.. 匹配任意字符,能夠匹配任意多個元素,表示類時,必須和*聯合使用object
+ 必須跟在類名後面,如Superman+,表示類自己和繼承或擴展指定類的全部類service
示例中的* run(..)解讀爲:語法
方法修飾符 無方法
返回類型 *匹配任意數量字符,表示返回類型不限im
方法名 run表示匹配名稱爲run的方法demo
參數 (..)表示匹配任意數量和類型的輸入參數
異常模式 不限
例如1:
定義切入點表達式 execution (* com.demo.service.impl..*.*(..))
一、execution(): 表達式主體。
2.、方法修飾符 無
三、第一個*號:表示返回類型,*號表示全部的類型。
四、包名:表示須要攔截的包名,後面的兩個句點表示當前包和當前包的全部子包,com.demo.service.impl包、子孫包下全部類的方法。
五、第二個*號:表示類名,*號表示全部的類。
六、*(..):最後這個星號表示方法名,*號表示全部的方法,後面括弧裏面表示方法的參數,兩個句點表示任何參數。
七、異常模式 不限
例如2:
execution(* com..*.*Dao.find*(..))
匹配包名前綴爲com的任何包下類名後綴爲Dao的方法,方法名必須以find爲前綴。如com.baobaotao.UserDao findByUserId()、com.baobaotao.dao.ForumDao findById()的方法都匹配切點
例如3:
execution(* joke(Object+)))
匹 配目標類中的joke()方法,方法擁有一個入參,且入參是Object類型或該類的子類。它匹配joke(String s1)。若是咱們定義的切點是execution(* joke(Object)),則只匹配joke(Object object)而不匹配joke(String cc)