aspectj 表達式 execution切點函數

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)

相關文章
相關標籤/搜索