溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring框架中動(dòng)態(tài)代理的示例分析

發(fā)布時(shí)間:2021-11-23 15:17:02 來(lái)源:億速云 閱讀:154 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Spring框架中動(dòng)態(tài)代理的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Spring框架中動(dòng)態(tài)代理的示例分析”這篇文章吧。

之前我們已經(jīng)介紹了AOP相關(guān)的知識(shí),并且了解了spring是通過(guò)動(dòng)態(tài)代理的方式實(shí)現(xiàn)AOP邏輯的。在spring中動(dòng)態(tài)代理也分為兩種一種是JDK動(dòng)態(tài)代理,一種是CGLib動(dòng)態(tài)代理。下面我們看一下這兩種動(dòng)態(tài)代理的區(qū)別。我們首先看一下在沒(méi)有動(dòng)態(tài)代理時(shí),添加事物的的邏輯處理。

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

雖然上述代碼已經(jīng)實(shí)現(xiàn)了我們的邏輯,但是在上一篇中我們已經(jīng)介紹過(guò)了,上述代碼的問(wèn)題就是會(huì)有重復(fù)的有關(guān)事物的代碼添加到業(yè)務(wù)類中,這樣很不方便維護(hù)。解決的辦法就是通過(guò)AOP方式來(lái)解決,下面我們分別采用JDK動(dòng)態(tài)代理和CGLib動(dòng)態(tài)代理技術(shù)來(lái)解決上述問(wèn)題。

  • JDK動(dòng)態(tài)代理

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

上述代碼就是采用JDK動(dòng)態(tài)代理技術(shù)實(shí)現(xiàn)AOP功能的,通過(guò)上述代碼實(shí)現(xiàn)AOP功能雖然比較簡(jiǎn)單,但是有一個(gè)弊端就是JDK代理只能支持接口類型,也就是只能為接口提供動(dòng)態(tài)代理功能,而CGLib動(dòng)態(tài)代理則可以直接為類創(chuàng)建代理類。下面我們通過(guò)CGLib動(dòng)態(tài)代理實(shí)現(xiàn)上述功能。

  • CGLib動(dòng)態(tài)代理

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

Spring框架中動(dòng)態(tài)代理的示例分析

  • JDK動(dòng)態(tài)代理與CGLib動(dòng)態(tài)代理的區(qū)別

  1. JDK動(dòng)態(tài)代理只能為接口創(chuàng)建代理類,而CGLib動(dòng)態(tài)代理而可以直接為類創(chuàng)建代理類。

  2. JDK動(dòng)態(tài)代理創(chuàng)建代理類的速度要比CGLib動(dòng)態(tài)代理創(chuàng)建代理類的速度要快。

  3. CGLib動(dòng)態(tài)代理創(chuàng)建代理類的性能要比JDK動(dòng)態(tài)代理創(chuàng)建代理類的性能要高。

所以在為單例對(duì)象創(chuàng)建代理類時(shí),因?yàn)椴恍枰l繁的創(chuàng)建代理對(duì)象,所以優(yōu)先考慮用CGLib動(dòng)態(tài)代理來(lái)創(chuàng)建,這樣該代理類的執(zhí)行時(shí)的性能比較高,反之則采用JDK動(dòng)態(tài)代理創(chuàng)建代理類。

以上是“Spring框架中動(dòng)態(tài)代理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI