用AOP的概念來(lái)代替掉上一篇的約定內(nèi)容的概念
瞧秩命,解決了那些生澀的概念了吧尉共,嘿嘿,AOP也就是那么回事弃锐,它搞了一些袄友,你看得不明不白的概念,忽悠你一下而已霹菊。
為了更加明確剧蚣,我們介紹一下AOP的術(shù)語(yǔ):
連接點(diǎn)(JointPoint):就是你具體需要攔截的方法,比如上一篇的類(lèi)HelloServiceImpl的sayHello方法就是一個(gè)連接點(diǎn)旋廷。
切面(Aspect):就是你需要織入的各類(lèi)通知所組成鸠按,在動(dòng)態(tài)代理里,你可以認(rèn)為它是一個(gè)攔截器饶碘,它還可以定義后面介紹的切點(diǎn)目尖,還有通知等內(nèi)容,你可以認(rèn)為大部分需要織入流程的東西和配置都可以在切面配置熊镣。
通知(Advice):分為前置(before)卑雁,后置(after),環(huán)繞(around)绪囱,異常返回通知(afterThrowing)测蹲,正常返回通知(afterReturning),它們將依據(jù)約定織入對(duì)應(yīng)的流程中。
織入(Weave):生成動(dòng)態(tài)代理對(duì)象鬼吵,將各類(lèi)通知織入流程的過(guò)程扣甲。Spring采用動(dòng)態(tài)代理技術(shù),織入流程齿椅,當(dāng)默認(rèn)的情況下琉挖,存在接口的,使用JDK動(dòng)態(tài)代理涣脚,否則使用CGLIB動(dòng)態(tài)代理織入示辈。
為了更好的理解這些,筆者給出Spring AOP約定的流程圖:
這就是Spring AOP和我們約定的流程遣蚀。
當(dāng)然這里還有兩個(gè)概念矾麻,一個(gè)叫做切點(diǎn)一個(gè)叫做引入,我們還沒(méi)有解釋芭梯,這篇還會(huì)解釋切點(diǎn)险耀,等待有機(jī)會(huì)我們?cè)俳忉屢氚桑贿^(guò)有了上表的描述玖喘,AOP的概念就簡(jiǎn)單多了甩牺,當(dāng)然Spring實(shí)現(xiàn)AOP,比博主模擬的要復(fù)雜得多累奈,不過(guò)道理是一樣的贬派,就是給約定急但,然后把你開(kāi)發(fā)的代碼織入到AOP約定的流程中。