AOP:基於xml配置

AOP 相關術語

Joinpoint( 連接點):
	所謂連接點是指那些被攔截到的點。在 spring 中,這些點指的是方法,
	因爲 spring 只支持方法類型的		連接點。
	
Pointcut( 切入點):
	所謂切入點是指我們要對哪些 Joinpoint 進行攔截的定義。
	
Advice( 通知/ 增強):
	所謂通知是指攔截到 Joinpoint 之後所要做的事情就是通知。
	通知的類型:前置通知,後置通知,異常通知,最終通知,環繞通知。
	
Introduction( 引介):
	引介是一種特殊的通知在不修改類代碼的前提下, Introduction 可以在運行期爲類動態地添加一些方
	法或 Field。

Target( 目標對象):
	代理的目標對象。

Weaving( 織入):
	是指把增強應用到目標對象來創建新的代理對象的過程。
	spring 採用動態代理織入,而 AspectJ 採用編譯期織入和類裝載期織入。

Proxy (代理):
	一個類被 AOP 織入增強後,就產生一個結果代理類。

Aspect( 切面):
	是切入點和通知(引介)的結合。

切入點表達式(execution):匹配方法的執行(常用)

表達式語法:execution([修飾符] 返回值類型 包名.類名.方法名(參數))
寫法說明:
全匹配方式:
	public  void	com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
訪問修飾符可以省略 
	void com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
返回值可以使用*號,表示任意返回值
	* com.itheima.service.impl.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
包名可以使用*號,表示任意包,但是有幾級包,需要寫幾個*
	* *.*.*.*.AccountServiceImpl.saveAccount(com.itheima.domain.Account)
使用..來表示當前包,及其子包
	* com..AccountServiceImpl.saveAccount(com.itheima.domain.Account)
類名可以使用*號,表示任意類
	* com..*.saveAccount(com.itheima.domain.Account)
方法名可以使用*號,表示任意方法
	* com..*.*( com.itheima.domain.Account)
參數列表可以使用*,表示參數可以是任意數據類型,但是必須有參數
	* com..*.*(*)
參數列表可以使用..表示有無參數均可,有參數可以是任意類型
	* com..*.*(..)
全通配方式:
	* *..*.*(..)
注:
通常情況下,我們都是對業務層的方法進行增強,所以切入點表達式都是切到業務層實現類。
	execution(* com.itheima.service.impl.*.*(..))

配置Spring中的IOC

  • (前置通知,後置通知,異常通知,最終通知) 與 環繞通知 只能使用一個

1、使用前置通知,後置通知,異常通知,最終通知

在這裏插入圖片描述

2、使用環繞通知

1、配置XML

在這裏插入圖片描述

2、aroundPringLog

在這裏插入圖片描述

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