Spring源碼解析之AOP篇

Spring AOP是我們?nèi)粘i_發(fā)中經(jīng)常使用的工具鸵隧,常被用來做統(tǒng)一的日志、異常處理草添、監(jiān)控等功能,使用方法在此不多贅述扼仲,有興趣的讀者可以自行去網(wǎng)上查閱資料進(jìn)行學(xué)習(xí)远寸,我們以注解的使用方式為例,分析其相關(guān)源碼犀盟,其他方式大同小異而晒。

開啟Spring AOP注解方式首先要配置標(biāo)簽,我們就以這個(gè)標(biāo)簽的解析作為入口來分析阅畴,這里需要讀者對(duì)Spring自定義標(biāo)簽解析的過程有一定的了解倡怎,筆者后續(xù)也會(huì)出相關(guān)的文章合呐。鎖定AopNamespaceHandler:

這里提到了proxy-target-class和expose-proxy兩個(gè)屬性瞎颗,簡(jiǎn)單介紹一下,Spring提供了JDK動(dòng)態(tài)代理和CGLIB代理兩種方式為目標(biāo)類創(chuàng)建代理寄啼,默認(rèn)情況下纽哥,如果目標(biāo)類實(shí)現(xiàn)了一個(gè)以上的用戶自定義的接口或者目標(biāo)類本身就是接口钠乏,就會(huì)使用JDK動(dòng)態(tài)代理,如果目標(biāo)類本身不是接口并且沒有實(shí)現(xiàn)任何接口春塌,就會(huì)使用CGLIB代理晓避,如果想強(qiáng)制使用CGLIB代理,則可以將proxy-target-class設(shè)置true只壳,這兩種代理方式在使用的時(shí)候有一些需要注意的事項(xiàng)俏拱,JDK動(dòng)態(tài)代理是基于實(shí)現(xiàn)目標(biāo)類的接口來創(chuàng)建代理類的,所以只有接口方法會(huì)被代理吼句,其他方法不會(huì)被代理锅必,而CGLIB代理是基于繼承目標(biāo)類實(shí)現(xiàn)的,所以不能被繼承的方法(例如final修飾的方法惕艳、private修飾的方法等)是不能被代理的搞隐,建議盡量使用JDK動(dòng)態(tài)代理的方式創(chuàng)建代理類驹愚。expose-proxy用來解決對(duì)象內(nèi)部this調(diào)用無法被切面增強(qiáng)的問題,例如我們?cè)贏類的對(duì)象內(nèi)部x方法中調(diào)用另外一個(gè)內(nèi)部方法y時(shí)劣纲,y方法不會(huì)被切面增強(qiáng)逢捺,這時(shí)可以配置expose-proxy為true并將this.y()改為((A)AopContext.currentProxy()).y(),即可讓y方法被切面增強(qiáng)癞季。

下面讓我們來看本篇文章的主角AnnotationAwareAspectJAutoProxyCreator的注冊(cè)過程蒸甜。

*** 由于分析Spring源碼內(nèi)容較多,請(qǐng)?jiān)赪iFi環(huán)境下余佛,點(diǎn)擊下方閱讀原文 ***

點(diǎn)擊閱讀原文

作者

張強(qiáng)柠新,16年加入京東,目前就職于京東商城京麥平臺(tái)組辉巡,從事京東對(duì)外開放平臺(tái)和服務(wù)于第三方入駐商家的相關(guān)工作恨憎,開源愛好者,對(duì)常用開源框架如Spring郊楣、Mybatis憔恳、Dubbo等有源碼級(jí)別的了解,熱衷于研究各種技術(shù)净蚤,致力于成為一名有腔調(diào)的工程師

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钥组,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子今瀑,更是在濱河造成了極大的恐慌程梦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橘荠,死亡現(xiàn)場(chǎng)離奇詭異屿附,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哥童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門挺份,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贮懈,你說我怎么就攤上這事匀泊。” “怎么了朵你?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵各聘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我撬呢,道長(zhǎng)伦吠,這世上最難降的妖魔是什么妆兑? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任魂拦,我火速辦了婚禮毛仪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芯勘。我一直安慰自己箱靴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布荷愕。 她就那樣靜靜地躺著衡怀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪安疗。 梳的紋絲不亂的頭發(fā)上抛杨,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音荐类,去河邊找鬼怖现。 笑死,一個(gè)胖子當(dāng)著我的面吹牛玉罐,可吹牛的內(nèi)容都是我干的屈嗤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吊输,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼饶号!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起季蚂,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤茫船,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后扭屁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體透硝,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年疯搅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了濒生。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幔欧,死狀恐怖罪治,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情礁蔗,我是刑警寧澤觉义,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站浴井,受9級(jí)特大地震影響晒骇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一洪囤、第九天 我趴在偏房一處隱蔽的房頂上張望徒坡。 院中可真熱鬧,春花似錦瘤缩、人聲如沸喇完。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锦溪。三九已至,卻和暖如春府怯,著一層夾襖步出監(jiān)牢的瞬間刻诊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工牺丙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坏逢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓赘被,卻偏偏與公主長(zhǎng)得像是整,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子民假,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理浮入,服務(wù)發(fā)現(xiàn),斷路器羊异,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評(píng)論 6 342
  • AOP核心概念 橫切關(guān)注點(diǎn):對(duì)哪些方法進(jìn)行攔截事秀,攔截后怎么處理,這些關(guān)注點(diǎn)稱之為橫切關(guān)注點(diǎn)切面(aspect):類...
    lijiaccy閱讀 328評(píng)論 0 0
  • 從三月份找實(shí)習(xí)到現(xiàn)在野舶,面了一些公司易迹,掛了不少,但最終還是拿到小米平道、百度睹欲、阿里、京東一屋、新浪窘疮、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,240評(píng)論 11 349
  • 最近狀態(tài)很不好冀墨,不管是精神闸衫、心態(tài)、還是工作上總感覺自己在垮掉一樣诽嘉,無能為力蔚出。 其實(shí)知道如何調(diào)節(jié)弟翘,不需要任何人安撫于...
    Ermao閱讀 227評(píng)論 1 1