1. 程式人生 > 其它 >2020-12-21學習記錄

2020-12-21學習記錄

一,spring–AOP面向切面程式設計
1.兩類動態代理:
2.AOP與OOP:
怎麼理解兩個概念?
AOP:要分析什麼樣的功能可以當做切面去使用,要知道事物的功能在什麼地方需要執行
00P:要考慮類的建立,屬性

********1.動態代理:能建立物件,這個物件創建出來之後能實現功能的增強。
實現方式:jdk動態代理,使用jdk中的Proxy,Method,InvocaitonHanderl建立代理物件。
jdk動態代理要求目標類必須實現介面

cglib動態代理:第三方的工具庫,建立代理物件,原理是繼承。 通過繼承目標類,建立子類。
子類就是代理物件。 要求目標類不能是final的, 方法也不能是final的

優勢是執行效率高一些,對類的要求比較低,不像jdk必須要有介面

*********2.動態代理的作用:
1)在目標類原始碼不改變的情況下,增加功能。
2)減少程式碼的重複
3)專注業務邏輯程式碼
4)解耦合,讓你的業務功能和日誌,事務非業務功能分離。

3.Aop:面向切面程式設計, 基於動態代理的,可以使用jdk,cglib兩種代理方式。
Aop就是動態代理的規範化, 把動態代理的實現步驟,方式都定義好了,
讓開發人員用一種統一的方式,使用動態代理。

  1. AOP(Aspect Orient Programming)面向切面程式設計
    Aspect: 切面,給你的目標類增加的功能,就是切面。 像上面用的日誌,事務都是切面。
    切面的特點: 一般都是非業務方法,獨立使用的。
    Orient:面向, 對著。
    Programming:程式設計

oop: 面向物件程式設計

*********怎麼理解面向切面程式設計 ?
1)需要在分析專案功能時,找出切面。
2)合理的安排切面的執行時間(在目標方法前, 還是目標方法後)
3)合理的安全切面執行的位置,在哪個類,哪個方法增加增強功能

術語:
1)Aspect:切面,表示增強的功能, 就是一堆程式碼,完成某個一個功能。非業務功能,
常見的切面功能有日誌, 事務, 統計資訊, 引數檢查, 許可權驗證。

2)JoinPoint:連線點 ,連線業務方法和切面的位置。 就某類中的業務方法

3)Pointcut : 切入點 ,指多個連線點方法的集合。多個方法
4)目標物件: 給哪個類的方法增加功能, 這個類就是目標物件
5)Advice:通知,通知表示切面功能執行的時間。

說一個切面有三個關鍵的要素:
1)切面的功能程式碼,切面幹什麼
2)切面的執行位置,使用Pointcut表示切面執行的位置
3)切面的執行時間,使用Advice表示時間,在目標方法之前,還是目標方法之後。

二,aspectj的建立步驟:
ch06-aop-aspectj: 使用aspectj框架實現aop。
使用aop:目的是給已經存在的一些類和方法,增加額外的功能。 前提是不改變原來的類的程式碼。

使用aspectj實現aop的基本步驟:
1.新建maven專案
2.加入依賴
1)spring依賴
2)aspectj依賴
3)junit單元測試
3.建立目標類:介面和他的實現類。
要做的是給類中的方法增加功能

4.建立切面類:普通類
1)在類的上面加入 @Aspect
2)在類中定義方法, 方法就是切面要執行的功能程式碼
在方法的上面加入aspectj中的通知註解,例如@Before
有需要指定切入點表示式execution()

5.建立spring的配置檔案:宣告物件,把物件交給容器統一管理
宣告物件你可以使用註解或者xml配置檔案
1)宣告目標物件
2)宣告切面類物件
3)宣告aspectj框架中的自動代理生成器標籤。
自動代理生成器:用來完成代理物件的自動建立功能的。

6.建立測試類,從spring容器中獲取目標物件(實際就是代理物件)。
通過代理執行方法,實現aop的功能增強。

三,什麼時候用AOP:
1,要給已經存在的類修改功能,但是類的功能不完善,還沒有原始碼
2,要給專案中的多個類增加相同的功能
3,給業務方法增加事務,日誌輸出