91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在AOP中使用Spring生成代理類

發布時間:2021-06-08 17:14:21 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關如何在AOP中使用Spring生成代理類,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Java 動態代理。具體有如下四步驟:

  • 通過實現 InvocationHandler 接口創建自己的調用處理器;

  • 通過為 Proxy 類指定 ClassLoader 對象和一組 interface 來創建動態代理類;

  • 通過反射機制獲得動態代理類的構造函數,其唯一參數類型是調用處理器接口類型;

  • 通過構造函數創建動態代理類實例,構造時調用處理器對象作為參數被傳入。

在AOP中,Spring通過生成代理類,來完成切面的織入。

Spring生成代理類有2種方式。

如果目標對象實現的是一個接口,Spring會使用JDK的java.lang.relect.Proxy類,它允許Spring動態生成一個新接口,來實現必要的接口,織入任何通知,并且把對這些接口的任何調用轉發到目標類。

如果目標類沒有實現一個接口,Spring就使用CGLIB庫生成目標類的一個子類,在創建這個子類時,Spring織入通知,并且把對這個子類的調用轉發到目標類。在使用這種方式時需要注意一點,被標記為final的方法不能被通知,因為Spring創建的子類無法重寫父類的final的方法。

原理區別:

java動態代理是利用反射機制生成一個實現代理接口的匿名類,在調用具體方法前調用InvokeHandler來處理。而cglib動態代理是利用asm開源包,對代理對象類的class文件加載進來,通過修改其字節碼生成子類來處理。

  • 1、如果目標對象實現了接口,默認情況下會采用JDK的動態代理實現AOP

  • 2、如果目標對象實現了接口,可以強制使用CGLIB實現AOP

  • 3、如果目標對象沒有實現了接口,必須采用CGLIB庫,spring會自動在JDK動態代理和CGLIB之間轉換

看完上述內容,你們對如何在AOP中使用Spring生成代理類有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐安县| 延寿县| 汉中市| 扎囊县| 醴陵市| 安庆市| 定州市| 民权县| 满洲里市| 皋兰县| 巴林右旗| 武宣县| 阿拉善右旗| 南京市| 临武县| 两当县| 观塘区| 杭锦旗| 启东市| 文成县| 丽水市| 梨树县| 双鸭山市| 双城市| 根河市| 五寨县| 新余市| 平阳县| 离岛区| 连州市| 宁明县| 荥经县| 石棉县| 宜阳县| 塘沽区| 洛阳市| 广西| 和田县| 象州县| 长阳| 浦东新区|