校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > Spring AOP代理詳細(xì)介紹

Spring AOP代理詳細(xì)介紹

熱門標(biāo)簽:百度地圖添加標(biāo)注圖標(biāo)樣式 如何用中國地圖標(biāo)注數(shù)字點(diǎn) 南昌市地圖標(biāo)注app 南京新思維電話機(jī)器人 地圖標(biāo)注市場怎么樣 好操作的電話機(jī)器人廠家 泰州泰興400電話 怎么申請(qǐng) 聊城智能電銷機(jī)器人外呼 企業(yè)怎么在聯(lián)通申請(qǐng)400電話

Spring AOP代理詳細(xì)介紹

前言:

一開始我對(duì)spring AOP還是屬于一知半解的狀態(tài),這幾天遇到一個(gè)問題,加上又查看了一些Spring相關(guān)知識(shí),感覺對(duì)這個(gè)問題有了更深刻的認(rèn)識(shí)。所以寫下來分享一下。

我們知道,Spring支持多種AOP方式,Spring自己的基于代理的AOP和AspectJ的基于編織(weaving)的AOP。如果一個(gè)類實(shí)現(xiàn)了一個(gè)或多個(gè)接口,那么Spring就會(huì)使用默認(rèn)的JDK動(dòng)態(tài)代理,如果沒有實(shí)現(xiàn)任何接口,就會(huì)使用cglib來代理。當(dāng)然我們也可以手動(dòng)改變這些設(shè)置。這也是比較容易掉坑的部分,如果設(shè)置錯(cuò)了代理方式,那么在依賴注入的時(shí)候,就會(huì)出現(xiàn)BeanNotOfRequiredTypeException。

首先來說說JDK動(dòng)態(tài)代理,這種代理方式會(huì)代理接口。具體的說,對(duì)象A實(shí)現(xiàn)了接口A和接口B。Spring會(huì)創(chuàng)建一個(gè)代理對(duì)象,這個(gè)對(duì)象實(shí)現(xiàn)了接口A和接口B,但是需要注意,代理對(duì)象和對(duì)象A沒有任何關(guān)系。我們可以把代理對(duì)象當(dāng)做任何一個(gè)接口來使用,但是無法將代理對(duì)象轉(zhuǎn)換成類A來使用。

假如我們現(xiàn)在有以下一個(gè)接口和類。

public interface InterfaceA {
}

public class ClassA implements InterfaceA {
}

然后我們使用依賴注入來獲取對(duì)象A的話就只能類型只能為InterfaceA,如果類型寫成ClassA就會(huì)出現(xiàn)BeanNotOfRequiredTypeException。因?yàn)檫@里實(shí)際注入的對(duì)象是一個(gè)實(shí)現(xiàn)了InterfaceA的代理對(duì)象,和ClassA沒有任何關(guān)系。這種情況是Spring建議我們的,使用接口來進(jìn)行編程。如果必須注入類的話,就需要使用cglib來代理,也就是在AOP配置中添加proxy-target-class="true"。

然后再來說說cglib代理。這是一個(gè)代理類的方式,所以如果我們使用這種代理,上面的情況下既可以注入ClassA,又可以注入InterfaceA。

最后再來說說AspectJ的基于編織的AOP。所謂編織,就是在生成的類文件中增加或修改代碼,有編譯時(shí)編織和運(yùn)行時(shí)編織之分。如果你使用AspectJ并反編譯一個(gè)編織了的類,就會(huì)發(fā)現(xiàn)這個(gè)類文件被AspectJ修改了。由于AspectJ的基于編織的特性,所以基于代理的AOP的自引用、兩種代理的問題,在AspectJ中都不會(huì)出現(xiàn)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • Spring基于ProxyFactoryBean創(chuàng)建AOP代理
  • Spring溫故而知新系列教程之AOP代理
  • Spring-AOP自動(dòng)創(chuàng)建代理之BeanNameAutoProxyCreator實(shí)例
  • 詳解Java反射實(shí)現(xiàn)Aop代理
  • 帶你了解如何使用Spring基于ProxyFactoryBean創(chuàng)建AOP代理

標(biāo)簽:山南 白銀 吉林 烏蘭察布 銅川 臨汾 開封 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Spring AOP代理詳細(xì)介紹》,本文關(guān)鍵詞  Spring,AOP,代理,詳細(xì),介紹,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Spring AOP代理詳細(xì)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于Spring AOP代理詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 呼伦贝尔市| 织金县| 贵州省| 巧家县| 温宿县| 镇远县| 江华| 铜梁县| 织金县| 常山县| 义马市| 拜城县| 枞阳县| 天祝| 汉沽区| 墨竹工卡县| 芒康县| 伊春市| 霍城县| 井冈山市| 玉龙| 石台县| 禄丰县| 阿合奇县| 广德县| 耒阳市| 云浮市| 马龙县| 安阳市| 佛山市| 梁平县| 安福县| 松溪县| 保亭| 桐梓县| 沭阳县| 怀宁县| 桐柏县| 三门峡市| 柏乡县| 竹溪县|