spring的AOP

面向切面編程,即事務,日志,權限,貫穿在程序所有角落的一系列動作。

正常的業(yè)務需要豎著往下走,AOP是橫向的擺著,方便專注于業(yè)務代碼的開發(fā)。

aop代理有靜態(tài)代理,jdk動態(tài)代理,cglib動態(tài)代理

通過動態(tài)代理的方式可以實現橫向擴展,實現權限效驗,日志等工能

jdk的靜態(tài)代理:代理類和委托類實現同一接口,并且在代理類中需要硬編碼接口

jdk的動態(tài)代理:代理類和委托類實現同一接口,主要是通過實現InvocationHandler并重寫invoke方法來進行動態(tài)代理的,在invoke方法中將對方法進行增強處理

CGlib動態(tài)代理:代理類委托自己的父類并且為其中非final委托方法創(chuàng)建兩個方法,一個是委托方法簽名相同的方法,他在方法中通過super調用委托方法,另一個是代理類獨有的方法。在代理類獨有的方法中,他會判斷是否存在實現了MethodInterceptor接口對象,若存在則將調用intercept方法進行代理


使用CGlib生成代理:對于不使用接口的業(yè)務類,無法使用JDK動態(tài)代理

CGlib采用非常底層字節(jié)碼技術,可以為一個類創(chuàng)建子類,解決無接口代理問題

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容