作用


通過配置織入@Aspectj切面

雖然可以通過編程的方式織入切面,但是一般情況下,我們還是使用spring的配置自動完成創建代理織入切面的工作。

 

 

通過aop命名空間的<aop:aspectj-autoproxy />聲明自動為spring容器中那些配置@aspectJ切面的bean創建代理,織入切面。當然,spring

在內部依舊采用AnnotationAwareAspectJAutoProxyCreator進行自動代理的創建工作,但具體實現的細節已經被<aop:aspectj-autoproxy />隱藏起來了

<aop:aspectj-autoproxy />有一個proxy-target-class屬性,默認為false,表示使用jdk動態代理織入增強,當配為<aop:aspectj-autoproxy  poxy-target-class="true"/>時,表示使用CGLib動態代理技術織入增強。不過即使proxy-target-class設置為false,如果目標類沒有聲明接口,則spring將自動使用CGLib動態代理。

@AspectJ語法基礎

@AspectJ使用jdk5.0注解和正規則的AspectJ 5的切面表達式語言描述切面,由於spring只支持方法的連接點,所以spring僅支持部分aspectJ的切面語言,在這節時,我們將對AspectJ切點表達式語言進行必要的學習。

 

切點表達式函數

AspectJ 5的切點表達式由關鍵字和操作參數組成。如execution(*greeTo(..))的切點表達式,"execute"為關鍵字,而"*greeTo(..)"為操作參數。在這里,execution代表目標類執行某一方法,而"*greeTo(..)"是描述目標方法的匹配模式串,兩者聯合起來所表示的切點匹配目標類greeTo(..)方法的連接點。為了描述方便,我們將execution()稱作函數,而將匹配串"*greeTo(..)"稱作函數的入參。

 

 

 


 


免責聲明!

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



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