更新時(shí)間:2022-11-24 10:23:23 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1614次
在Java教程中大家會(huì)學(xué)到AOP,AoP:面向切面編程,對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,使得業(yè)務(wù)邏輯的各個(gè)部分之間的耦合度降低。
通俗來講:不修改源碼的方式,在主干功能里添加新功能。
有兩種動(dòng)態(tài)代理情況:
(1)有接口,使用JDK動(dòng)態(tài)代理
創(chuàng)建接口實(shí)現(xiàn)類的代理對(duì)象,增強(qiáng)類的方法
(2)沒有接口情況,使用CGLIB動(dòng)態(tài)代理
創(chuàng)建子類的代理對(duì)象,增強(qiáng)類的方法
JDK的動(dòng)態(tài)代理:使用Proxy類的方法newProxyInstance方法來創(chuàng)建代理對(duì)象
第一個(gè)參數(shù):類加載器;
第二個(gè)參數(shù):增強(qiáng)方法所在的類所實(shí)現(xiàn)的接口,支持多個(gè)接口
第三個(gè)參數(shù):實(shí)現(xiàn)InvocationHandler接口,創(chuàng)建代理對(duì)象,寫增強(qiáng)的方法
代碼實(shí)現(xiàn):
spring5對(duì)動(dòng)態(tài)代理做了封裝
(1)連接點(diǎn):可以被增強(qiáng)的方法
(2)切入點(diǎn):實(shí)際被增強(qiáng)的方法
(3)通知(增強(qiáng)):實(shí)際增強(qiáng)的邏輯部分
通知的類型:
前置通知
后置通知(有異常就不執(zhí)行)
環(huán)繞通知
異常通知
最終通知(有異常仍然執(zhí)行)
(4)切面:是動(dòng)作,把通知應(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á)式的作用:用來知道是對(duì)哪個(gè)類的哪個(gè)方法進(jìn)行增強(qiáng)
以上就是關(guān)于“一文讀懂AOP面向切面編程”的介紹,大家如果想了解更多相關(guān)知識(shí),不妨來關(guān)注一下本站的Spring框架教程,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743