Spring的學習(3)

第3章AOP面向切面編程的相關概念

3.1什麼是AOP ?

AOP (Aspect Oriented Programing) 稱爲:面向切面編程,它是一種編程思想。
AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性代碼的編寫方式(例如性能監視、事務管理、安全檢查、緩存、日誌記錄等)。
【擴展瞭解】AOP 是 OOP(面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)是一種計算機編程架構),思想延續 !
在這裏插入圖片描述
什麼是OCP:即開閉原則。
在這裏插入圖片描述
參考網站:http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793454.html
在這裏插入圖片描述
AOP 思想: 基於代理思想,對原來目標對象,創建代理對象,在不修改原對象代碼情況下,通過代理對象,調用增強功能的代碼,從而對原有業務方法進行增強 !
切面:需要代理一些方法和增強代碼 。

3.2AOP的應用場景

場景一: 記錄日誌
場景二: 監控方法運行時間 (監控性能)
場景三: 權限控制
場景四: 緩存優化 (第一次調用查詢數據庫,將查詢結果放入內存對象, 第二次調用, 直接從內存對象返回,不需要查詢數據庫 )
場景五: 事務管理 (調用方法前開啓事務, 調用方法後提交或者回滾、關閉事務 )

3.3Spring AOP編程兩種方式

Spring AOP使用純Java實現,不需要專門的編譯過程和類加載器,在運行期通過代理方式向目標類植入增強代碼。
AsPecJ是一個基於Java語言的AOP框架,Spring2.0開始,Spring AOP引入對Aspect的支持。

簡單的說,Spring內部支持兩套AOP編程的方案:
Spring 1.2 開始支持AOP編程 (傳統SpringAOP 編程),編程非常複雜 ---- 更好學習Spring 內置傳統AOP代碼
Spring 2.0 之後支持第三方 AOP框架(AspectJ ),實現另一種 AOP編程 – 推薦

3.4AOP編程相關術語

AOP思想編程的機制
在這裏插入圖片描述
AOP的相關術語

Aspect(切面): 是通知和切入點的結合,通知和切入點共同定義了關於切面的全部內容---它的功能、在何時和何地完成其功能
joinpoint(連接點):所謂連接點是指那些被攔截到的點。在spring中,這些點指的是方法,因爲spring只支持方法類型的連接點.
Pointcut(切入點):所謂切入點是指我們要對哪些joinpoint進行攔截的定義.
              通知定義了切面的”什麼”和”何時”,切入點就定義了”何地”.
Advice(通知):所謂通知是指攔截到joinpoint之後所要做的事情就是通知.通知分爲前置通知,後置通知,異常通知,最終通知,環繞通知(切面要完成的功能)
Target(目標對象):代理的目標對象
Weaving(織入):是指把切面應用到目標對象來創建新的代理對象的過程.切面在指定的連接點織入到目標對象
Introduction(引入)(不要求掌握):在不修改類代碼的前提下, Introduction可以在運行期爲類動態地添加一些方法或Field.

通過案例解釋AOP相關概念
需求:UserDao中有5個方法,分別是save()、update()、delete()、find()、login();在訪問UserDao的save()、update()、delete()方法之前,進行記錄日誌的操作。
在這裏插入圖片描述
Aspect切面(類):增強代碼 Advice(writeLog方法)和 切入點 Pointcut(save,update,delete) 的結合。換句話說:對哪些方法進行怎樣的代碼增強。

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