Spring切入點(execution)的表常用達式講解

前言

我先說一下,我自身學習的時候對這點知識,一直處於不太懂的狀態,每次做項目好多次都卡在這,所以我在網上查詢好多資料寫下這篇博客,希望幫助更多的人。(想要了解更多查閱網上資料)

execution(表達式)

語法:(看着語法一點一點琢磨)

execution( [修飾符] 返回值類型 包名.類名.方法名 (參數) )
參數:
  1. ()匹配一個無參方法

  2. ..)參數列表可以使用..表示有無參數均可,有參數可以是任意類型

  3. *)參數列表可以使用*,表示參數可以是任意數據類型,但是必須有參數

  4. *Integer)匹配一個接受兩個參數的方法,第一個可以爲任意類型,第二個必須爲Integer。

符號作用

  1. *:代表一個任意類型的參數;
  2. ..:代表零個或多個任意類型的參數。
詳解
  1. 完全指定 一個 方法

    execution(public void com.bdqn.entity.Player.updateEquip(..))
    

    詳解:上面的語法表示匹配修飾符爲 public 返回值爲voidupdateEquip()方法,並且在com.bdqn.entity.Player 包下

  2. 修飾符可以省略

    execution(void com.bdqn.entity.Player.updateEquip(..))
    

    詳解:上面的語法表示匹配 任意修飾符 返回值爲voidupdateEquip()方法,並且在com.bdqn.entity.Player 包下

  3. 返回值類型必須寫,可以用*代替

    execution(* com.bdqn.entity.Player.updateEquip(..))
    

    詳解:上面的語法表示匹配 任意修飾符 任意返回值 爲的updateEquip()方法,並且在com.bdqn.entity.Player 包下

  4. 包名必須寫,可以用*代替

    execution(* *.*.*.Player.updateEquip(..))
    
  5. 類必須寫,可以用*代替

    execution(* com.bdqn.entity.*.updateEquip(..))
    

列舉常用的切入表達式

  1. 表示匹配任意返回值類型的

    public * addNewUser(Entity.User); 
    
  2. 表示匹配任意方法名

    public void *(Entity.User);
    
  3. 表示匹配任意參數類型及個數的方法。

    public void addNewUser(..); 
    
  4. 表示匹配com.service包下所有類的所有方法。

    * com.service.*.*(..); 
    
  5. 表示匹配com.service包及其子包下所有的類的所有方法。

    * com.service..*.(..); 
    

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