springAOP——?jiǎng)e說(shuō)我沒(méi)告訴你

好的各位小伙伴

雖然今天是周六

我們還是不能松懈

好的開(kāi)始今天的分享

來(lái)一起看一下吧!

AOP 是什么


AOP 是 Aspect-oriented programming 面向切面(方面)的編程的簡(jiǎn)寫(xiě)烈疚,可以把業(yè)務(wù)邏輯和系統(tǒng)級(jí)的服務(wù)進(jìn)行隔離,使業(yè)務(wù)邏輯跟各個(gè)系統(tǒng)級(jí)服務(wù)的耦合度降低,提高程序的重用性和開(kāi)發(fā)效率


業(yè)務(wù)邏輯就是某個(gè)類的某個(gè)方法本身要實(shí)現(xiàn)的功能揉阎。比如我們之前寫(xiě)的 studentservice 里面實(shí)現(xiàn)的增刪改查就是業(yè)務(wù)邏輯杏节!



系統(tǒng)級(jí)的服務(wù)像系統(tǒng)的日志,事務(wù),權(quán)限驗(yàn)證

系統(tǒng)日志會(huì)記錄什么人在哪一天什么時(shí)間做了哪些操作谤民。

權(quán)限驗(yàn)證就是驗(yàn)證我們的權(quán)限慎框,還記得我們之前的聊天室的踢人功能嗎辆影?只有 admin才可以踢人

事務(wù)這個(gè)概念徒像,今天暫時(shí)先放一下,在之后做例子的時(shí)候會(huì)演示給大家的蛙讥!


那么現(xiàn)在把這些系統(tǒng)級(jí)服務(wù)的插入進(jìn)我們的功能代碼中锯蛀,用一行輸出語(yǔ)句代表我們的業(yè)務(wù)邏輯,在執(zhí)行一個(gè)操作之前次慢,要先進(jìn)行權(quán)限驗(yàn)證旁涤,驗(yàn)證通過(guò)之后翔曲,再來(lái)執(zhí)行我們的操作,操作完成后劈愚,記錄日志瞳遍。


小伙伴們自己想一下為什么是這個(gè)順序?

?

這是在沒(méi)有 AOP 之前菌羽,我們每個(gè)功能都要這么去添加系統(tǒng)級(jí)服務(wù)掠械,要是這個(gè)項(xiàng)目有一千個(gè)類,你就去加吧注祖,至少一周不用干別的了猾蒂,就是復(fù)制代碼!


現(xiàn)在我們有了 AOP 就可以不用這么麻煩了

AOP 的底層原理 ?


AOP 的底層實(shí)現(xiàn)的原理:動(dòng)態(tài)代理



首先是實(shí)例化我們要代理的目標(biāo)類 target是晨, 然后在生成一個(gè)動(dòng)態(tài)代理 proxy 肚菠,這個(gè)方法里面有三個(gè)參數(shù),我們的目標(biāo)類署鸡,目標(biāo)類的接口案糙,實(shí)現(xiàn) invocation 接口限嫌。實(shí)現(xiàn)接口的同時(shí)需要實(shí)現(xiàn)里面的方法靴庆!這個(gè)方法里,有我們的代理對(duì)象怒医,方法和參數(shù)炉抒!



我已經(jīng)把驗(yàn)證和日志都注釋掉了



只要我們的測(cè)試結(jié)果中有我們標(biāo)注的這兩行,證明我們成功的插入了系統(tǒng)級(jí)服務(wù)稚叹!



測(cè)試結(jié)果:



看著很麻煩是不是焰薄,當(dāng)然我們?cè)趯?shí)際的開(kāi)發(fā)中不會(huì)去手動(dòng)的生成代理,這里只是給大家演示 AOP 的底層原理扒袖,要是這么麻煩我們還不如直接在代碼里面插入服務(wù)了塞茅。


注意動(dòng)態(tài)代理有兩種方式:jdk動(dòng)態(tài)代理 /cglib動(dòng)態(tài)代理

jdk 的動(dòng)態(tài)代理機(jī)制只能代理實(shí)現(xiàn)了接口的類

cglib 的動(dòng)態(tài)代理既可以代理實(shí)現(xiàn)了接口的類,也可以代理沒(méi)有實(shí)現(xiàn)接口的類

AOP一些專業(yè)術(shù)語(yǔ)


切面(Aspect): 就是交叉在各個(gè)業(yè)務(wù)邏輯中的系統(tǒng)服務(wù),類似于安全驗(yàn)證,事務(wù)處理,日志記錄都可以理解為切面。

織入(weaving) :就是將切面代碼插入到目標(biāo)對(duì)象某個(gè)方法的過(guò)程,相當(dāng)于我們?cè)趈dk動(dòng)態(tài)代理里面的 invocationHandler接口方法的內(nèi)容 季率。

連接點(diǎn)(JointPoint) :理論上可能被切面織入的所有方法 ,比如 addStudent...通常所有方法都可以被稱為連接點(diǎn)野瘦。

切入點(diǎn)(PointCut) :就是實(shí)際上被切面織入的方法。

目標(biāo)對(duì)象(target) :就是切入點(diǎn)和連接點(diǎn)所屬的類 StudentService飒泻。

通知(Advice): 就是切面的實(shí)現(xiàn),切面織入的目標(biāo)對(duì)象,時(shí)間點(diǎn)(方法執(zhí)行前 ,后,前后,異常)以及內(nèi)容鞭光。

顧問(wèn)(Advisor) :其實(shí)就是通知的一個(gè)封裝和延伸,可以將通知以更為復(fù)雜的方式織入到某些方法中。

好的各位小伙伴

今天就先到這里了

我會(huì)繼續(xù)努力的

再見(jiàn)了各位


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泞遗,一起剝皮案震驚了整個(gè)濱河市惰许,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌史辙,老刑警劉巖汹买,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佩伤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卦睹,警方通過(guò)查閱死者的電腦和手機(jī)畦戒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)结序,“玉大人障斋,你說(shuō)我怎么就攤上這事⌒旌祝” “怎么了垃环?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)返敬。 經(jīng)常有香客問(wèn)我遂庄,道長(zhǎng),這世上最難降的妖魔是什么劲赠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任涛目,我火速辦了婚禮,結(jié)果婚禮上凛澎,老公的妹妹穿的比我還像新娘霹肝。我一直安慰自己,他們只是感情好塑煎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布沫换。 她就那樣靜靜地躺著,像睡著了一般最铁。 火紅的嫁衣襯著肌膚如雪讯赏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天冷尉,我揣著相機(jī)與錄音漱挎,去河邊找鬼。 笑死雀哨,一個(gè)胖子當(dāng)著我的面吹牛磕谅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播震束,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼怜庸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了垢村?” 一聲冷哼從身側(cè)響起割疾,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘉栓,沒(méi)想到半個(gè)月后宏榕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拓诸,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年麻昼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奠支。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抚芦,死狀恐怖倍谜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叉抡,我是刑警寧澤尔崔,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站褥民,受9級(jí)特大地震影響季春,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜消返,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一载弄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撵颊,春花似錦宇攻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挣棕。三九已至译隘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洛心,已是汗流浹背固耘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留词身,地道東北人厅目。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像法严,于是被迫代替她去往敵國(guó)和親损敷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,743評(píng)論 25 707
  • 本章內(nèi)容: 面向切面編程的基本原理 通過(guò)POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,132評(píng)論 0 9
  • 這已經(jīng)是好久之前寫(xiě)的文章了深啤,今天整理文章的時(shí)候拗馒,就給弄上來(lái)了,算是個(gè)記錄吧溯街。诱桂。 First Part:人際關(guān)系為什...
    MartinZhuang閱讀 1,780評(píng)論 1 3
  • 每次相遇都是久別重逢洋丐,我低聲細(xì)數(shù),第一次熟悉挥等,第二次緊張友绝,第三次依戀,第四次看見(jiàn)肝劲,第五次掙扎迁客,第六次幻想,無(wú)法跨越...
    夜來(lái)曉風(fēng)閱讀 297評(píng)論 0 0
  • 2006年的歐洲領(lǐng)導(dǎo)論壇上辞槐,英國(guó)石油(BP)的一位副總裁介紹BP的供應(yīng)商管理之道哲泊。她說(shuō),戰(zhàn)略采購(gòu)項(xiàng)目選擇合適的供應(yīng)...
    華商智造閱讀 363評(píng)論 0 0