Spring 第三章 Spring與AOP(二)

2021-08-28 11:57:17 字數 1958 閱讀 7092

新增多個通知:

<?xml version="1.0" encoding="utf-8"?>		

使用cglib**

現在想只增強單獨的目標方法,advice只能指定時間點,不能指定切入點。

想實現指定切入點,就要實現顧問advisor。

pointcutadvisor是顧問的一種,可以指定具體切入點,對通知進行包裝,會根據不同的通知型別,在不同的時間點,將切面織入到不同的切入點。

pointcutadvisor 介面有兩個實現類:

namematchmethodpointcutadvisor 名稱匹配方法切入點顧問

regexpmethodpointcutadvisor 正規表示式方法切入點顧問

namematchmethodpointcutadvisor 名稱匹配方法切入點顧問

只為dofirst和dosecond設定後置通知

regexpmethodpointcutadvisor 正規表示式方法切入點顧問

-這裡的正規表示式匹配的物件是全限定性方法名 

當前**存在的兩個問題:1)乙個目標物件對應乙個**物件,當目標物件太多時,就會使用多次proxyfactorybean來建立多個**物件,會使xml檔案太長,不便於管理。

2)使用者真正想呼叫的是目標物件,真正可以呼叫的是**物件,這不符合正常的邏輯

以上這倆問題,均為proxybeanfactory這個類太簡單引起的。

自動**生成器:實現了bean後處理器介面,可以自動裝載bean,無需id。自動**生成器的功能是在service bean初始化前後呼叫before和after兩種方法,這兩種方法通過advisor(顧問)來實現對目標類的增強。

3.5.1 預設自動**生成器

<?xml version="1.0" encoding="utf-8"?>		

3.5.2 bean名稱自動**生成器defaultadvisorautoproxycreator存在三個問題:

1)不能選擇目標物件

2)不能選擇切面型別,切面只能是advisor

3)不能選擇advisor,所以advisor均將被作為切面織入到目標方法

spring 第三章節 高階裝配

spring裝載bean的時候,可以依據不同環境 全域性變數值 對不同的bean進行初始化。這樣可以讓系統根據不同環境採用最佳實現方式。開發環境 測試環境 qa環境 生產環境甚至是前端開發環境 profile spring裝配bean的時候,可以依據不同的條件判定 系統環境變數值 依賴bean是否裝...

Spring實戰系列 第三章 高階裝配

環境與profile spring.profiles.default spring.profiles.active 設定上述兩引數的方法 作為dispatcherservlet的初始化引數 作為web應用的上下文引數 作為jndi條目 作為環境變數 作為jvm的系統屬性 在繼承測試類上,使用 act...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...