更新時間:2022-11-24 10:23:23 來源:動力節點 瀏覽1566次
在Java教程中大家會學到AOP,AoP:面向切面編程,對業務邏輯的各個部分進行隔離,使得業務邏輯的各個部分之間的耦合度降低。
通俗來講:不修改源碼的方式,在主干功能里添加新功能。
有兩種動態代理情況:
(1)有接口,使用JDK動態代理
創建接口實現類的代理對象,增強類的方法
(2)沒有接口情況,使用CGLIB動態代理
創建子類的代理對象,增強類的方法
JDK的動態代理:使用Proxy類的方法newProxyInstance方法來創建代理對象
第一個參數:類加載器;
第二個參數:增強方法所在的類所實現的接口,支持多個接口
第三個參數:實現InvocationHandler接口,創建代理對象,寫增強的方法
代碼實現:
spring5對動態代理做了封裝
(1)連接點:可以被增強的方法
(2)切入點:實際被增強的方法
(3)通知(增強):實際增強的邏輯部分
通知的類型:
前置通知
后置通知(有異常就不執行)
環繞通知
異常通知
最終通知(有異常仍然執行)
(4)切面:是動作,把通知應用到切入點過程
(把增強的邏輯部分應用到需要被增強的方法處)
Spring 框架一般是基于ASpectJ實現AoP操作
ASpectJ不是Spring的組成部分,是獨立的AoP框架,一般把AspectJ和Spring框架一起使用,進行AoP操作
基于ASpectJ實現AoP操作的方式:
(1)基于xml配置文件方式
(2)基于注解方式
切入點表達式:
切入點:實際被增強的方法
切入點表達式的作用:用來知道是對哪個類的哪個方法進行增強
以上就是關于“一文讀懂AOP面向切面編程”的介紹,大家如果想了解更多相關知識,不妨來關注一下本站的Spring框架教程,里面還有更豐富的知識等著大家去學習,希望對大家能夠有所幫助哦。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習