1. 程式人生 > >Spring aop AspectJ切入點初用心得

Spring aop AspectJ切入點初用心得

以前專案中未用過aop,故一直對aop不瞭解,近期看了看,大致瞭解了下,在上程式碼前首先需要了解aop一些基本概念。

一、AOP基本概念

: 1、Aspect(切面):說白了就是一個class,裡面定義切入點和通知

2、JointPoint(連線點):接入點,例如方法執行、類初始化、異常處理。 在Spring AOP中,接入點始終表示方法執行。

3、Advice(增強):AOP在特定的切入點上執行的增強處理,主要包括下面幾種:before,after,afterReturning,afterThrowing,around,執行順序為:around->before->around->after->afterReturning 或 afterThrowing

4、Pointcut(切入點):用來匹配特定的接入點,增強會與切點表示式產生關聯,並執行在任何切點匹配到的接入點上。說白點也就是定義觸發時機。

5、AOP代理:為了實現切面功能一個物件會被AOP框架創建出來。在Spring框架中AOP代理的預設方式是:有介面,就使用基於介面的JDK動態代理,否則使用基於類的CGLIB動態代理。但是我們可以通過設定proxy-target-class=“true”,完全使用CGLIB動態代理。

二、模擬aspect advice的執行過程

1、手動配置
首先建立一個普通class,裡面包含advice的幾種增強處理。如圖:
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述
class建立完畢後,開始配置spring配置檔案,如圖:
在這裡插入圖片描述

在這裡插入圖片描述
下來測試:
在這裡插入圖片描述
執行結果:
在這裡插入圖片描述
請忽略上圖中**null:0 這個,是個人實現類中的console資訊
2、註解方式
與手動配置區別在於切面類和配置,先看切面類,需要用@Aspect標識,每個增強也是用註解標註:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

配置檔案:
在這裡插入圖片描述
執行結果就不展示了,和手動配置一致

通過上面執行結果可以看出Advice(增強)的執行過程:
在這裡插入圖片描述

此外需要注意afterReturning中指定的返回值,其實接受的是arround中的返回值。如果需要對返回結果進行修改,需要在arround中進行操作。