更新時間:2022-11-24 10:23:23 來源:動力節(jié)點(diǎn) 瀏覽2346次
在Java教程中大家會學(xué)到AOP,AoP:面向切面編程,對業(yè)務(wù)邏輯的各個部分進(jìn)行隔離,使得業(yè)務(wù)邏輯的各個部分之間的耦合度降低。
通俗來講:不修改源碼的方式,在主干功能里添加新功能。
有兩種動態(tài)代理情況:
(1)有接口,使用JDK動態(tài)代理
創(chuàng)建接口實(shí)現(xiàn)類的代理對象,增強(qiáng)類的方法

(2)沒有接口情況,使用CGLIB動態(tài)代理
創(chuàng)建子類的代理對象,增強(qiáng)類的方法

JDK的動態(tài)代理:使用Proxy類的方法newProxyInstance方法來創(chuàng)建代理對象

第一個參數(shù):類加載器;
第二個參數(shù):增強(qiáng)方法所在的類所實(shí)現(xiàn)的接口,支持多個接口
第三個參數(shù):實(shí)現(xiàn)InvocationHandler接口,創(chuàng)建代理對象,寫增強(qiáng)的方法
代碼實(shí)現(xiàn):



spring5對動態(tài)代理做了封裝
(1)連接點(diǎn):可以被增強(qiáng)的方法
(2)切入點(diǎn):實(shí)際被增強(qiáng)的方法
(3)通知(增強(qiáng)):實(shí)際增強(qiáng)的邏輯部分
通知的類型:
前置通知
后置通知(有異常就不執(zhí)行)
環(huán)繞通知
異常通知
最終通知(有異常仍然執(zhí)行)
(4)切面:是動作,把通知應(yīng)用到切入點(diǎn)過程
(把增強(qiáng)的邏輯部分應(yīng)用到需要被增強(qiáng)的方法處)
Spring 框架一般是基于ASpectJ實(shí)現(xiàn)AoP操作
ASpectJ不是Spring的組成部分,是獨(dú)立的AoP框架,一般把AspectJ和Spring框架一起使用,進(jìn)行AoP操作
基于ASpectJ實(shí)現(xiàn)AoP操作的方式:
(1)基于xml配置文件方式
(2)基于注解方式
切入點(diǎn)表達(dá)式:
切入點(diǎn):實(shí)際被增強(qiáng)的方法
切入點(diǎn)表達(dá)式的作用:用來知道是對哪個類的哪個方法進(jìn)行增強(qiáng)
以上就是關(guān)于“一文讀懂AOP面向切面編程”的介紹,大家如果想了解更多相關(guān)知識,不妨來關(guān)注一下本站的Spring框架教程,里面還有更豐富的知識等著大家去學(xué)習(xí),希望對大家能夠有所幫助哦。

初級 202925

初級 203221

初級 202629

初級 203743