基於@AspectJ和schema的aop(三)---切點函數詳解

來源:互聯網
上載者:User

標籤:size   ota   模式   str   .exe   包名   com   ring   --   

  切點函數是AspectJ運算式語言的核心, 也是使用@AspectJ進行切面定義的痛點.本小節我們通過具體的執行個體對切點函數進行深入學習.

[email protected]()

  @annotation()表示標註了某個註解的所有方法,這個比較簡單.

2.execution()

  execution()是最常使用的切點函數,其文法如下:

  execution(<修飾符模式>? <傳回型別模式> <方法名模式> (<參數模式>) <異常模式>?)

  除了傳回型別模式, 方法名模式, 參數模式是必須的外,其他兩個都不是必須的

  (1) 通過方法簽名定義切點

      • execution(public * *(..))

        匹配所有目標類的public 方法, 第一個*號代表傳回型別, 第二個*號代表方法名.而..代表任意的入參

      • execution(* *To(..))

        匹配目標類所有以To結尾的方法, 第一個*代表傳回型別, *To代表所有以To結尾的方法

  (2) 通過類定義切點

      • execution(* com.bao.bao.Waiter.*(..))

        匹配Waiter介面的所有方法, 第一個*號代表返回任意類型, com.bao.bao.Waiter.*代表Waiter介面中的任意方法

      • execution(* com.bao.bao.Waiter+.*(..))

        匹配Waiter介面及其所有實作類別的方法, 這個和上面的區別在於,這個不但匹配Waiter介面中定義的方法, 還匹配Waiter實作類別中定義的方法(但不在Waiter介面中定義),而上面的那個只匹配Waiter介面中定義的方法

  (3) 通過類包定義切點

    在類名模式串中, ".*"表示包下的所有類, 而"..*"表示包, 子孫包下的所有類

      • execution(* com.bao.bao.*(..))

        匹配com. bao.bao包下所有類的所有方法

      • execution(* com.bao.bao..*(..))

        匹配com.bao.bao包,子孫包下所有類的所有方法. ".."出現在類名中時, 後面必須跟"*"表示包,子孫包下的所有類

      • execution(* com..*.*Dao.find*(..))

        匹配包名首碼為com的任何包下類名尾碼為Dao的方法, 方法名必須以find為首碼.

  (4) 通過方法入參定義切點

    切點運算式中, 方法入參部分比較複雜,可以使用"*"和".."萬用字元.其中"*"表示任意類型的參數;而".."表示任意型別參數且參數個數不限.

      • execution(* joke(String, *))

        匹配目標類中的joke()方法, 該方法第一個入參為String, 第二個入參可以是任意類型

      • execution(* joke(String, ..)) 

        匹配目標類中的joke()方法, 該方法第一個入參為String,後面可以有任意多個入參,且類型不限

      •      

 

基於@AspectJ和schema的aop(三)---切點函數詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.