AOP術(shù)語

AOP(Aspect-Oriented Programming) 面向切面編程

Aspect: 橫切面的功能,抽象出類或接口,AOP編程重要的就是識別出橫切面功能。(方面,類似于字符編碼功能)是advice和pointcut的結(jié)合。
Advice: 橫切面功能的具體實(shí)現(xiàn),需要根據(jù)實(shí)際情況分析:

  • 前置(Before): 在目標(biāo)方法被調(diào)用之前調(diào)用advice。
  • 后置(After): 在目標(biāo)方法完成之后調(diào)用advice, 此時(shí)不關(guān)心方法的輸出是什么。
  • 返回(After-returning): 在目標(biāo)方法成功執(zhí)行之后調(diào)用advice。
  • 異常(After-throwing): 在目標(biāo)方法拋出異常后調(diào)用advice。
  • 環(huán)繞(Around):advice包裹了被advice的方法,在被advice的方法調(diào)用之前和調(diào)用之后執(zhí)行自定義的行為。

Pointcut: 切入點(diǎn),描述橫切面功能應(yīng)用的限制,不是所有的流程都需要,有助于縮小切面所通知的連接點(diǎn)范圍。定義了“何處”。Pointcut的定義會匹配通知所要織入的一個(gè)或多個(gè)連接點(diǎn)。

Joinpoint: 連接點(diǎn), 或指組件加入流程的時(shí)機(jī), 比如設(shè)置屬性, 調(diào)用方法等。 Spring只支持方法調(diào)用的連接點(diǎn), 而其他的一些框架支持屬性的連接點(diǎn)如:AspectJ,(類似于過濾器的過濾規(guī)則 request,forward)。這個(gè)點(diǎn)可以是調(diào)用方法時(shí)、拋出異常時(shí)、修改字段時(shí)。切面代碼可以利用這些點(diǎn)插入到應(yīng)用的正常流程中,并添加新的行為。

Introduction:Introduction(引入)允許我們向現(xiàn)有的類添加新方法或?qū)傩浴?/p>

weaving: 織入,將組件應(yīng)用到業(yè)務(wù)流程中的這個(gè)過程,叫縫合或織入(類似于將過濾器配置到web.xml文件的過程)。在目標(biāo)生命周期有多個(gè)點(diǎn)可以進(jìn)行織入:

  • 編譯期:編譯時(shí)織入,需要特殊編譯器:AspectJ的織入編譯器就是這種方式織入切面的。
  • 類加載期:在目標(biāo)類加載到JVM時(shí)被織入。需要(ClassLoader)
  • 運(yùn)行期:在應(yīng)用運(yùn)行的某個(gè)時(shí)刻被織入。AOP容器會為目標(biāo)對象動(dòng)態(tài)地創(chuàng)建一個(gè)代理對象。SpringAOP就是以這種方式織入切面的。

Proxy: 代理,在實(shí)現(xiàn)上,Spring的AOP其實(shí)就是使用JDK的動(dòng)態(tài)代理(使用接口的方式完成代理操作),也可以使用CGLIB(使用繼承的方式完成代理操作)。

Target: 業(yè)務(wù)操作的實(shí)際對象。

術(shù)語太多。我很難過。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1)連接點(diǎn)(Joinpoint) 程序執(zhí)行的某個(gè)特定位置:如類開始初始化前、類初始化后、類某個(gè)方法調(diào)用前、調(diào)用后...
    小沙鷹168閱讀 1,313評論 0 2
  • 基本知識 其實(shí), 接觸了這么久的 AOP, 我感覺, AOP 給人難以理解的一個(gè)關(guān)鍵點(diǎn)是它的概念比較多, 而且坑爹...
    永順閱讀 8,655評論 5 114
  • 本章內(nèi)容: 面向切面編程的基本原理 通過POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,390評論 0 9
  • AOP實(shí)現(xiàn)可分為兩類(按AOP框架修改源代碼的時(shí)機(jī)): 靜態(tài)AOP實(shí)現(xiàn):AOP框架在編譯階段對程序進(jìn)行修改,即實(shí)現(xiàn)...
    數(shù)獨(dú)題閱讀 2,399評論 0 22
  • 本博中關(guān)于spring的文章:Spring IOC和AOP原理,Spring事務(wù)原理探究,Spring配置文件屬性...
    Maggie編程去閱讀 4,198評論 0 34

友情鏈接更多精彩內(nèi)容