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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java基础---动态代理机制

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基础---动态代理机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
動態代理的意思是,有一個委托類有一個代理類,讓代理類去實現委托類的方法,這樣既可以對委托類的代碼實現進行封裝和隱藏,還能夠在委托類的基礎上添加額外的一些自定義處理。 兩種代理方式 1.jdk原生的代理方式 2.cglib方式 ===使用jdk動態代理的流程 1.創建接口

?

2.創建委托類實現接口

?

3.創建代理類實現invocationHandler接口,綁定委托類,實現invoke方法。 綁定委托類:使用Proxy.newProxyInstance方法來綁定委托類返回一個代理對象,傳入三個參數:委托類的類加載器,委托類接口,代理類。

?

實現invoke代理方法 Object invoke(Object proxy, Method method, Object[] args)?throws?Throwable proxy:  指代我們所代理的那個真實對象 method:  指代的是我們所要調用真實對象的某個方法的Method對象 args:  指代的是調用真實對象某個方法時接受的參數 最后就是創建代理類,綁定后直接調用代理類的方法就可以了。

?


===詳細描述cglib動態代理的實現方式? 采用字節碼技術為一個類創建子類,也就是代理類,使用代理類去實現父類的方法。 1.創建委托類 2.創建代理類,實現MethodInterceptor接口,實現intercept方法,在intercept方法里面攔截委托類的方法并且進行增強。 3.通過代理類的getProxy方法創建代理對象,入參是父類的字節碼。 ====jdk實現的動態代理和CGLIB實現的動態代理有什么區別?在spring中切面編程使用的是哪一種呢? jdk實現的時候使用newProxyInstance創建代理對象的時候必須有委托類的接口,所以jdk方式必須有接口;代理類實現了和委托類同樣的接口。 CGlib創建代理類對象不需要接口,生成的類是委托類的子類,實現MethodIntercept接口實現intercept方法。 spring AOP代理機制: 1、若目標對象實現了若干接口,spring使用JDK的java.lang.reflect.Proxy類代理。 優點:因為有接口,所以使系統更加松耦合 缺點:為每一個目標類創建接口 2、若目標對象沒有實現任何接口,spring使用CGLIB庫生成目標對象的子類。 優點:因為代理類與目標類是繼承關系,所以不需要有接口的存在。 缺點:因為沒有使用接口,所以系統的耦合性沒有使用JDK的動態代理好。
====動態代理有什么用處?用代理類實現方法有什么好處? 用處: 1.權限管理 2.日志管理 3.事務管理 好處: 1.隱藏委托類的實現細節,通過代理類在做處理,還能夠在原方法基礎上添加新的實現。 2.能夠在應用運行過程中動態創建對象或者做修改操作而不需要停下應用。實際生產中這是很重要的。

轉載于:https://www.cnblogs.com/buptyuhanwen/p/9412257.html

總結

以上是生活随笔為你收集整理的java基础---动态代理机制的全部內容,希望文章能夠幫你解決所遇到的問題。

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