Spring AOP中annotation 表達式

Aop
連接點(Joinpoint) 程序執行的某個特定位置,如某個方法調用前,調用後,方法拋出異常後,這些代碼中的特定點稱爲連接點。簡單來說,就是在哪加入你的邏輯增強
連接點表示具體要攔截的方法,上面切點是定義一個範圍,而連接點是具體到某個方法
切點(PointCut) 每個程序的連接點有多個,如何定位到某個感興趣的連接點,就需要通過切點來定位。比如,連接點--數據庫的記錄,切點--查詢條件
切點用於來限定Spring-AOP啓動的範圍,通常我們採用表達式的方式來設置,所以關鍵詞是範圍
增強(Advice) 增強是織入到目標類連接點上的一段程序代碼。在Spring中,像BeforeAdvice等還帶有方位信息 
通知是直譯過來的結果,我個人感覺叫做“業務增強”更合適 對照代碼就是攔截器定義的相關方法,通知分爲如下幾種:
前置通知(before):在執行業務代碼前做些操作,比如獲取連接對象
後置通知(after):在執行業務代碼後做些操作,無論是否發生異常,它都會執行,比如關閉連接對象
異常通知(afterThrowing):在執行業務代碼後出現異常,需要做的操作,比如回滾事務
返回通知(afterReturning),在執行業務代碼後無異常,會執行的操作
環繞通知(around),這個目前跟我們談論的事務沒有對應的操作,所以暫時不談
目標對象(Target) 需要被加強的業務對象
織入(Weaving) 織入就是將增強添加到對目標類具體連接點上的過程。
織入是一個形象的說法,具體來說,就是生成代理對象並將切面內容融入到業務流程的過程。
代理類(Proxy) 一個類被AOP織入增強後,就產生了一個代理類。
切面(Aspect) 切面由切點和增強組成,它既包括了橫切邏輯的定義,也包括了連接點的定義,SpringAOP就是將切面所定義的橫切邏輯織入到切面所制定的連接點中。 
比如上文討論的數據庫事務,這個數據庫事務代碼貫穿了我們的整個代碼,我們就可以這個叫做切面。 SpringAOP將切面定義的內容織入到我們的代碼中,從而實現前後的控制邏輯。 比如我們常寫的攔截器Interceptor,這就是一個切面類
 

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