日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:

發布時間:2024/8/26 javascript 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理: 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???① JDK動態代理只提供接口的代理,不支持類的代理,要求被代理類實現接口。JDK動態代理的核心是InvocationHandler接口和Proxy類,在獲取代理對象時,使用Proxy類來動態創建目標類的代理類(即最終真正的代理類,這個類繼承自Proxy并實現了我們定義的接口),當代理對象調用真實對象的方法時, InvocationHandler?通過invoke()方法反射來調用目標類中的代碼,動態地將橫切邏輯和業務編織在一起;

?InvocationHandler 的 invoke(Object??proxy,Method??method,Object[] args):proxy是最終生成的代理對象;??method 是被代理目標實例的某個具體方法;??args 是被代理目標實例某個方法的具體入參, 在方法反射調用時使用。

????????② 如果被代理類沒有實現接口,那么Spring AOP會選擇使用CGLIB來動態代理目標類。CGLIB(Code Generation Library),是一個代碼生成的類庫,可以在運行時動態的生成指定類的一個子類對象,并覆蓋其中特定方法并添加增強代碼,從而實現AOP。CGLIB是通過繼承的方式做的動態代理,因此如果某個類被標記為final,那么它是無法使用CGLIB做動態代理的。

(3)靜態代理與動態代理區別在于生成AOP代理對象的時機不同,相對來說AspectJ的靜態代理方式具有更好的性能,但是AspectJ需要特定的編譯器進行處理,而Spring AOP則無需特定的編譯器處理。

IoC讓相互協作的組件保持松散的耦合,而AOP編程允許你把遍布于應用各層的功能分離出來形成可重用的功能組件。?

總結

以上是生活随笔為你收集整理的Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。