AOP簡介
AOP (Aspect Oriented Programing) 稱為:面向切面編程,它是一種編程思想。AOP 是 OOP(面向對象編程 Object Oriented Programming)的思想延續
AOP采取橫向抽取機制,取代了傳統縱向繼承體系重復性代碼的編寫方式(例如性能監視、事務管理、安全檢查、緩存、日志記錄等)
AOP核心思想
基于代理思想,對原來目標對象,創建代理對象,在不修改原對象代碼情況下,通過代理對象,調用增強功能的代碼,從而對原有業務方法進行增強
切面:需要代理一些方法和增強代碼
AOP的應用場景
場景一:記錄日志
場景二:監控方法運行時間 (監控性能)
場景三: 權限控制
場景四: 緩存優化 (第一次調用查詢數據庫,將查詢結果放入內存對象, 第二次調用, 直接從內存對象返回,不需要查詢數據庫 )
場景五: 事務管理 (調用方法前開啟事務, 調用方法后提交或者回滾、關閉事務 )
Spring AOP編程兩種方式
方式一:Spring AOP使用純Java實現,不需要專門的編譯過程和類加載器,在運行期通過代理方式向目標類植入增強代碼(編程復雜,不推薦)
方式二:Spring 2.0 之后支持第三方 AOP框架(AspectJ ),實現另一種 AOP編程 (推薦)
AOP編程相關術語
1.Aspect(切面): 是通知和切入點的結合,通知和切入點共同定義了關于切面的全部內容—它的功能、在何時和何地完成其功能
2.joinpoint(連接點):所謂連接點是指那些被攔截到的點。在spring中,這些點指的是方法,因為spring只支持方法類型的連接點.
3.Pointcut(切入點):所謂切入點是指我們要對哪些joinpoint進行攔截的定義.通知定義了切面的”什么”和”何時”,切入點就定義了”何地”.
4.Advice(通知、增強):所謂通知是指攔截到joinpoint之后所要做的事情就是通知.通知分為前置通知,后置通知,異常通知,最終通知,環繞通知(切面要完成的功能)
5.Target(目標對象):代理的目標對象
6.Weaving(織入):是指把切面應用到目標對象來創建新的代理對象的過程.切面在指定的連接點織入到目標對象
7.Introduction(引入)(不要求掌握):在不修改類代碼的前提下, Introduction可以在運行期為類動態地添加一些方法或Field.
AOP編程底層實現機制
AOP 就是要對目標進行代理對象的創建, Spring AOP是基于動態代理的,分別基于兩種動態代理機制: JDK動態代理和CGLIB動態代理
方式一:JDK動態代理
JDK動態代理,針對目標對象的接口進行代理 ,動態生成接口的實現類 (必須有接口)
過程要點
1.必須對接口生成代理
2.采用Proxy對象,通過newProxyInstance方法為目標創建代理對象。
該方法接收三個參數 :
(1)目標對象類加載器
(2)目標對象實現的接口
(3)代理后的處理程序InvocationHandler
3.實現InvocationHandler 接口中 invoke方法,在目標對象每個方法調用時,都會執行invoke
最后在出來放一波福利吧!希望可以幫助到大家!
戳此獲取免費學習資料
千千萬萬要記得:多刷題!!多刷題!!
之前算法是我的硬傷,后面硬啃了好長一段時間才補回來,算法才是程序員的靈魂!!!!
篇幅有限,以下只能截圖分享部分的資源!!
(1)多線程(這里以多線程為代表,其實整理了一本JAVA核心架構筆記集)
(2)刷的算法題(還有左神的算法筆記)
(3)面經+真題解析+對應的相關筆記(很全面)
(4)視頻學習(部分)
ps:當你覺得學不進或者累了的時候,視頻是個不錯的選擇
其實以上我所分享的所有東西,有需要的話我這邊可以免費分享給大家,但請一定記住獲取方式:點擊這里前往免費獲取
420)]
其實以上我所分享的所有東西,有需要的話我這邊可以免費分享給大家,但請一定記住獲取方式:點擊這里前往免費獲取
在這里,最后只一句話:祝大家offer拿到手軟!!