2.3 AOP核心概念
通過SpringAOP的快速入門,感受了一下AOP面向切面編程的開發(fā)方式。下面我們再來學(xué)習(xí)AOP當(dāng)中涉及到的一些核心概念。
1. 連接點:JoinPoint,可以被AOP控制的方法(暗含方法執(zhí)行時的相關(guān)信息)
連接點指的是可以被aop控制的方法。例如:入門程序當(dāng)中所有的業(yè)務(wù)方法都是可以被aop控制的方法。
在SpringAOP提供的JoinPoint當(dāng)中,封裝了連接點方法在執(zhí)行時的相關(guān)信息。(后面會有具體的講解)
2. 通知:Advice,指哪些重復(fù)的邏輯,也就是共性功能(最終體現(xiàn)為一個方法)
在入門程序中是需要統(tǒng)計各個業(yè)務(wù)方法的執(zhí)行耗時的,此時我們就需要在這些業(yè)務(wù)方法運行開始之前,先記錄這個方法運行的開始時間,在每一個業(yè)務(wù)方法運行結(jié)束的時候,再來記錄這個方法運行的結(jié)束時間。
但是在AOP面向切面編程當(dāng)中,我們只需要將這部分重復(fù)的代碼邏輯抽取出來單獨定義。抽取出來的這一部分重復(fù)的邏輯,也就是共性的功能。
3. 切入點:PointCut,匹配連接點的條件,通知僅會在切入點方法執(zhí)行時被應(yīng)用
在通知當(dāng)中,我們所定義的共性功能到底要應(yīng)用在哪些方法上?此時就涉及到了切入點pointcut概念。切入點指的是匹配連接點的條件。通知僅會在切入點方法運行時才會被應(yīng)用。
在aop的開發(fā)當(dāng)中,我們通常會通過一個切入點表達式來描述切入點(后面會有詳解)。
假如:切入點表達式改為DeptServiceImpl.list(),此時就代表僅僅只有l(wèi)ist這一個方法是切入點。只有l(wèi)ist()方法在運行的時候才會應(yīng)用通知。
4. 切面:Aspect,描述通知與切入點的對應(yīng)關(guān)系(通知+切入點)
當(dāng)通知和切入點結(jié)合在一起,就形成了一個切面。通過切面就能夠描述當(dāng)前aop程序需要針對于哪個原始方法,在什么時候執(zhí)行什么樣的操作。
切面所在的類,我們一般稱為切面類(被@Aspect注解標(biāo)識的類)
5. 目標(biāo)對象:Target,通知所應(yīng)用的對象
目標(biāo)對象指的就是通知所應(yīng)用的對象,我們就稱之為目標(biāo)對象。
AOP的核心概念我們介紹完畢之后,接下來我們再來分析一下我們所定義的通知是如何與目標(biāo)對象結(jié)合在一起,對目標(biāo)對象當(dāng)中的方法進行功能增強的。
文章來源:http://www.zghlxwxcb.cn/news/detail-831458.html
Spring的AOP底層是基于動態(tài)代理技術(shù)來實現(xiàn)的,也就是說在程序運行的時候,會自動的基于動態(tài)代理技術(shù)為目標(biāo)對象生成一個對應(yīng)的代理對象。在代理對象當(dāng)中就會對目標(biāo)對象當(dāng)中的原始方法進行功能的增強。文章來源地址http://www.zghlxwxcb.cn/news/detail-831458.html
到了這里,關(guān)于Javaweb之SpringBootWeb案例之AOP核心概念的詳細解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!