激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 视频二区国产 | 精品不卡| 国产成人午夜高潮毛片 | 亚洲精品免费播放 | 国产精品久久久久av | xxx18hd18hd日本 | av免费在线不卡 | 黄网站免费观看视频 | 欧美精品成人 | 亚洲第一色婷婷 | 亚洲91在线| 成人在线免费观看小视频 | 中文字幕国产一区 | 亚洲第一视频在线 | 成人精品aaaa网站 | 91久久91久久精品免观看 | 欧美一级精品片在线看 | 国产妇女乱码一区二区三区 | 一区二区三区小视频 | 日本残忍极度灌浣肠视频 | 爱视频福利| 精品国产99久久久久久宅男i | av在线电影网站 | 99视频有精品视频高清 | 国产精品久久99精品毛片三a | 久草成人在线观看 | 欧洲精品色 | www.三区| 成人免费福利视频 | 亚洲成人精品国产 | 九九精品久久 | 在线一级片 | 日本在线播放一区 | 久草在线免费资源站 | 欧美黑人一级 | 国产一级毛片国产 | 久久亚洲精品久久国产一区二区 | 日韩精品中文字幕在线观看 | av在线日韩 | 污片在线观看视频 | 成人午夜视频在线观看免费 |