一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 在AOP中Spring生成代理類的兩種方式

在AOP中Spring生成代理類的兩種方式

2021-06-30 14:23李燦輝 Java教程

今天小編就為大家分享一篇關于在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之間轉換

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/li_canhui/article/details/85253201

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产偷窥女洗浴在线观看亚洲 | 欧美久在线观看在线观看 | 美女被视频网站 | 精品综合久久久久久97超人 | 欧美日韩视频在线一区二区 | 欧美一区二区三区免费高 | 亚州精品视频 | 国产精品日韩欧美一区二区三区 | chinesespank打屁股| 欧美日韩亚洲一区二区三区在线观看 | 爱操综合| 久久婷婷五月综合色精品首页 | 亚洲国产综合网 | 久久久无码精品亚洲A片软件 | 亚洲国产高清视频 | 国产麻豆91欧美一区二区 | 99久热只有精品视频免费看 | 国产午夜精品不卡视频 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 久久99热狠狠色一区二区 | 国产精品自在欧美一区 | 国产卡一卡二卡三乱码手机 | 欧美成人福利视频 | 网友自拍偷拍 | 国产精品毛片va一区二区三区 | 国产高清在线看 | 亚洲精品第三页 | av72成人| 成年美女黄网站色视频大全免费 | 无人区乱码区1卡2卡三卡在线 | 3d动漫h在线观看网站蜜芽 | 亚洲3dxxxx动漫xxx | 狠狠涩 | 好紧好爽再叫浪一点点潘金莲 | 亚洲国产精品第一区二区三区 | h网站国产 | 肉文高h文 | 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 免费观看一级特黄三大片视频 | 成年人视频在线免费看 | 久久久无码精品亚洲A片猫咪 |