一、AOP的核心概念
- 概念:AOP(Aspect Oriented Programming)面向切面程式設計,一種程式設計範式
- 作用:在不驚動原始設計的基礎上為方法進行功能增強
- 核心概念
- 代理(Proxy):SpringAOP的核心本質是采用代理模式實作的
- 連接配接點(JoinPoint):在SpringAOP中,了解為任意方法的執行
- 切入點(Pointcut):比對連接配接點的式子,也是具有共性功能的方法描述
- 通知(Advice):若幹個方法的共性功能,在切入點處執行,最終展現為一個方法
- 切面(Aspect):描述通知與切入點的對應關系
- 目标對象(Target):被代理的原始對象成為目标對象
二、切入點表達式
- 切入點表達式标準格式:動作關鍵字(通路修飾符 傳回值 包名.類/接口名.方法名(參數)異常名)
execution(* com.itheima.service.*Service.*(..))
- 切入點表達式描述通配符:
- 作用:用于快速描述,範圍描述
-
:比對任意符号(常用)*
-
:比對多個連續的任意符号(常用)..
-
:比對子類類型+
-
切入點表達式書寫技巧
1.按标準規範開發
2.查詢操作的傳回值建議使用*比對
3.減少使用..的形式描述包
4.對接口進行描述,使用*表示子產品名,例如UserService的比對描述為*Service
5.方法名書寫保留動詞,例如get,使用*表示名詞,例如getById比對描述為getBy*
6.參數根據實際情況靈活調整
三、五種通知類型
- 前置通知
- 後置通知
- 環繞通知(重點)
- 環繞通知依賴形參ProceedingJoinPoint才能實作對原始方法的調用
- 環繞通知可以隔離原始方法的調用執行
- 環繞通知傳回值設定為Object類型
- 環繞通知中可以對原始方法調用過程中出現的異常進行處理
- 傳回後通知
- 抛出異常後通知
四、通知中擷取參數
- 擷取切入點方法的參數,所有的通知類型都可以擷取參數
- JoinPoint:适用于前置、後置、傳回後、抛出異常後通知,設定為方法的第一個形參
- ProceedingJoinPoint:适用于環繞通知
- 擷取切入點方法傳回值,前置和抛出異常後通知是沒有傳回值,後置通知可有可無,是以不做研究
- 傳回後通知
- 環繞通知
- 擷取切入點方法運作異常資訊,前置和傳回後通知是不會有,後置通知可有可無,是以不做研究
- 抛出異常後通知
- 環繞通知
本文來自部落格園,作者:|舊市拾荒|,轉載請注明原文連結:https://www.cnblogs.com/xiaoyh/p/16412347.html