aop技术原理
我們今天要重頭開始講Spring事務的原理,AOP的原理知道是怎么實現出來的嗎,AOP的原理是怎么實現出來的嗎,有沒有誰知道,是怎么實現的,不是工廠方法,你們可能有人知道,是靜態代理和動態代理,不過在這邊我要講一下,首先大家記住,靜態代理是需要生成目標代理對象的,動態代理是不需要生成目標代理對象的,這個時候我們講一下,這個靜態代理我們一般用的比較少,他寫起來比較麻煩,有很多代理類,這肯定是不推薦大家使用的,不推薦的,我在之前很早的時候,我就已經講過,設計模式我們不是已經講完了嗎,是講過代理設計模式的,動態代理講的非常非常深了,動態代理有分為,比較主流的幾種,JDK動態代理,還有什么呢,叫做CGLIB,你們能不能說一下JDK動態代理和CGLIB的區別,CGLIB和動態代理的區別,JDK需要接口,CGLIB通過子類進行實現,這是最基本的,JDK他確實是需要接口的,CGLIB動態代理只需要子類實現,那么在這邊我問一下你們,記住一點啊,CGLIB它是基于ASM字節碼進行包裝的一個類庫,這是我要給你們講的一個類庫,ASM干嘛用的,有沒有誰知道的,ASM絕對說過的,只是沒有講過這個框架,ASM做什么目的的,叫做字節碼,它是怎么做的呢,對字節碼做新增和修改,都是對字節碼做修改,他底層是通過ASM做包裝的,專門去做代理的,底層是基于ASM實現的,大家在這邊一定要記住,它是基于反射實現的,所以這個區別是比較大的,但是字節碼效率比反射的效率要高一點,比較推薦使用CGLIB,已經把原理回顧了一遍,我還是大體給你演示一遍,把代理設計模式大體的演示一遍
代理模式應用場景
SpringAOP、事物原理、日志打印、權限控制、遠程調用、安全代理 可以隱蔽真實角色
代理的分類
靜態代理(靜態定義代理類)
動態代理(動態生成代理類)
Jdk自帶動態代理
Cglib 、javaassist(字節碼操作庫)
?
總結