spring相關—AOP編程—切入點、連接點


1 切入點表達式

1.1 作用

  通過表達式的方式定位一個或多個具體的連接點。

1.2 語法細節

①切入點表達式的語法格式

execution([權限修飾符] [返回值類型] [簡單類名/全類名] [方法名]([參數列表]))

②舉例說明

表達式

execution(* com.atguigu.spring.ArithmeticCalculator.*(..))

含義

ArithmeticCalculator接口中聲明的所有方法。

com.atguigu.spring.ArithmeticCalculator.*(..)表示目標方法的簽名。

第一個“*”代表任意修飾符及任意返回值。

第二個“*”代表任意方法。

“..”匹配任意數量、任意類型的參數。

若目標類、接口與該切面類在同一個包中可以省略包名。

 

表達式

execution(public * ArithmeticCalculator.*(..))

含義

ArithmeticCalculator接口的所有公有方法

 

表達式

execution(public double ArithmeticCalculator.*(..))

含義

ArithmeticCalculator接口中返回double類型數值的方法

 

表達式

execution(public double ArithmeticCalculator.*(double, ..))

含義

第一個參數為double類型的方法。

“..” 匹配任意數量、任意類型的參數。

 

表達式

execution(public double ArithmeticCalculator.*(doubledouble))

含義

參數類型為double,double類型的方法

 

③在AspectJ中,切入點表達式可以通過 “&&”、“||”、“!”等操作符結合起來。

表達式

execution (* *.add(int,..)) || execution(* *.sub(int,..))

含義

任意類中第一個參數為int類型的add方法或sub方法

 

1.3 切入點表達式應用到實際的切面類中

 

2 當前連接點細節

2.1 概述

切入點表達式通常都會是從宏觀上定位一組方法,和具體某個通知的注解結合起來就能夠確定對應的連接點。那么就一個具體的連接點而言,我們可能會關心這個連接點的一些具體信息,例如:當前連接點所在方法的方法名、當前傳入的參數值等等。這些信息都封裝在JoinPoint接口的實例對象中。

2.2 JoinPoint

 

3 重用切入點定義

  [1] 在編寫AspectJ切面時,可以直接在通知注解中書寫切入點表達式。但同一個切點表達式可能會在多個通知中重復出現。

  [2] 在AspectJ切面中,可以通過@Pointcut注解將一個切入點聲明成簡單的方法。切入點的方法體通常是空的,因為將切入點定義與應用程序邏輯混在一起是不合理的。

  [3] 切入點方法的訪問控制符同時也控制着這個切入點的可見性。如果切入點要在多個切面中共用,最好將它們集中在一個公共的類中。在這種情況下,它們必須被聲明為public。在引入這個切入點時,必須將類名也包括在內。如果類沒有與這個切面放在同一個包中,還必須包含包名。

  [4]其他通知可以通過方法名稱引入該切入點

    

 

https://www.cnblogs.com/kangxingyue-210/p/7449924.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM