AOP的概念

51. 解釋AOP

面向切面的編程,或AOP, 是一種編程技術(shù),允許程序模塊化橫向切割關(guān)注點(diǎn),或橫切典型的責(zé)任劃分,如日志和事務(wù)管理。

52. Aspect 切面

AOP核心就是切面,它將多個(gè)類的通用行為封裝成可重用的模塊,該模塊含有一組API提供橫切功能。比如,一個(gè)日志模塊可以被稱作日志的AOP切面。根據(jù)需求的不同,一個(gè)應(yīng)用程序可以有若干切面。在Spring AOP中,切面通過帶有@Aspect注解的類實(shí)現(xiàn)。

52. 在Spring AOP 中,關(guān)注點(diǎn)和橫切關(guān)注的區(qū)別是什么?

關(guān)注點(diǎn)是應(yīng)用中一個(gè)模塊的行為,一個(gè)關(guān)注點(diǎn)可能會(huì)被定義成一個(gè)我們想實(shí)現(xiàn)的一個(gè)功能。

橫切關(guān)注點(diǎn)是一個(gè)關(guān)注點(diǎn),此關(guān)注點(diǎn)是整個(gè)應(yīng)用都會(huì)使用的功能,并影響整個(gè)應(yīng)用,比如日志,安全和數(shù)據(jù)傳輸,幾乎應(yīng)用的每個(gè)模塊都需要的功能。因此這些都屬于橫切關(guān)注點(diǎn)。

54. 連接點(diǎn)

連接點(diǎn)代表一個(gè)應(yīng)用程序的某個(gè)位置,在這個(gè)位置我們可以插入一個(gè)AOP切面,它實(shí)際上是個(gè)應(yīng)用程序執(zhí)行Spring AOP的位置。

55. 通知

通知是個(gè)在方法執(zhí)行前或執(zhí)行后要做的動(dòng)作,實(shí)際上是程序執(zhí)行時(shí)要通過SpringAOP框架觸發(fā)的代碼段。

Spring切面可以應(yīng)用五種類型的通知:

before:前置通知,在一個(gè)方法執(zhí)行前被調(diào)用。

after:?在方法執(zhí)行之后調(diào)用的通知,無論方法執(zhí)行是否成功。

after-returning:?僅當(dāng)方法成功完成后執(zhí)行的通知。

after-throwing:?在方法拋出異常退出時(shí)執(zhí)行的通知。

around:?在方法執(zhí)行之前和之后調(diào)用的通知。

56. 切點(diǎn)

切入點(diǎn)是一個(gè)或一組連接點(diǎn),通知將在這些位置執(zhí)行??梢酝ㄟ^表達(dá)式或匹配的方式指明切入點(diǎn)。

57. 什么是引入?

引入允許我們?cè)谝汛嬖诘念愔性黾有碌姆椒ê蛯傩浴?/p>

58. 什么是目標(biāo)對(duì)象?

被一個(gè)或者多個(gè)切面所通知的對(duì)象。它通常是一個(gè)代理對(duì)象。也指被通知(advised)對(duì)象。

59. 什么是代理?

代理是通知目標(biāo)對(duì)象后創(chuàng)建的對(duì)象。從客戶端的角度看,代理對(duì)象和目標(biāo)對(duì)象是一樣的。

60. 有幾種不同類型的自動(dòng)代理?

BeanNameAutoProxyCreator

DefaultAdvisorAutoProxyCreator

Metadata autoproxying

61. 什么是織入,什么是織入應(yīng)用的不同點(diǎn)?

織入是將切面和到其他應(yīng)用類型或?qū)ο筮B接或創(chuàng)建一個(gè)被通知對(duì)象的過程。

織入可以在編譯時(shí),加載時(shí),或運(yùn)行時(shí)完成。

62. 解釋基于XML Schema方式的切面實(shí)現(xiàn)。

在這種情況下,切面由常規(guī)類以及基于XML的配置實(shí)現(xiàn)。

63. 解釋基于注解的切面實(shí)現(xiàn)

在這種情況下(基于@AspectJ的實(shí)現(xiàn)),涉及到的切面聲明的風(fēng)格與帶有java5標(biāo)注的普通java類一致。

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

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

  • 本章內(nèi)容: 面向切面編程的基本原理 通過POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,425評(píng)論 0 9
  • 開始使用Spring Framework 5.0和設(shè)計(jì)模式 介紹Spring框架 Spring簡化了應(yīng)用程序開發(fā),...
    一顆懶能閱讀 2,996評(píng)論 3 21
  • 該文主要講Spring AOP的一些概念,不會(huì)細(xì)講如何使用AOP。關(guān)于AOP的使用,可以參考文末鏈接。 AOP 概...
    _Zy閱讀 529評(píng)論 0 0
  • 在軟件開發(fā)中,散步在應(yīng)用程序中多處的功能被稱為橫切關(guān)注點(diǎn)(cross-cutting concern)。通常來講這...
    郭之源閱讀 1,530評(píng)論 0 3
  • 07-胡小雪—20180816-理想國微寫作打卡 剛剛加班和一個(gè)班上的同學(xué)聊到工作上的事情,大家要明確自己的方向,...
    cher1122閱讀 240評(píng)論 0 0

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