Spring系列(十二):AOP相關知識筆記

? ? ? ? ?
今天給大家分享AOP相關的知識,希望對大家能有所幫助!
1、AOP定義
AOP全稱為Aspect Oriented Programming,中文含義為:面向切面編程。通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的技術。AOP技術是Spring框架中的一個重要內容。使用AOP技術可以對業(yè)務邏輯的各個部分進行隔離,可以使業(yè)務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時也提高了開發(fā)的效率。? ? ? ?

?? ? ? ?
2、AOP的用途
使用AOP技術可以很好的將日志記錄,性能統(tǒng)計,安全控制,事務處理,異常處理、Web參數(shù)校驗等代碼邏輯從業(yè)務代碼中分離出來,讓開發(fā)人員只需要關注業(yè)務代碼的編寫,從而開發(fā)效率,節(jié)省開發(fā)成本。
3、AOP常用的注解
@Aspect切面聲明:通常標注在類、接口(包括注解類型)或枚舉上。
@Pointcut切入點聲明:即切入到哪些目標類的目標方法。value 屬性指定切入點表達式,默認為 “”,用于被通知注解引用,這樣通知注解只需要關聯(lián)此切入點聲明即可,無需再重復寫切入點表達式
@Before前置通知:?在目標方法(切入點)執(zhí)行之前執(zhí)行。value 屬性綁定通知的切入點表達式,可以關聯(lián)切入點聲明,也可以直接設置切入點表達式注意:如果在此回調方法中拋出異常,則目標方法不會再執(zhí)行,會繼續(xù)執(zhí)行后置通知 -> 異常通知。
@After后置通知,:在目標方法(切入點)執(zhí)行之后執(zhí)行
@AfterRunning返回通知,:在目標方法(切入點)返回結果之后執(zhí)行,在?@After 的后面執(zhí)行pointcut 屬性綁定通知的切入點表達式,優(yōu)先級高于 value,默認為 “”
@AfterThrowing異常通知,:在方法拋出異常之后執(zhí)行, 意味著跳過返回通知pointcut 屬性綁定通知的切入點表達式,優(yōu)先級高于 value,默認為 “”說明:如果目標方法自己 try-catch 了異常,而沒有繼續(xù)往外拋,則不會進入此回調函數(shù)
@Around環(huán)繞通知:目標方法執(zhí)行前后分別執(zhí)行一些代碼,發(fā)生異常的時候執(zhí)行另外一些代碼
4、AOP實現(xiàn)Web統(tǒng)一日志Demo
4.1 新建IErrorCode.java 接口類
4.2 新建ResultCode.java 接口類
4.3 新建WebLog.java
4.4 新建WebLogAspect.java 類
4.5 新建測試控制器TestLogController.java
請求參數(shù):localhost:8080/TestLog/Test?name=121輸出結果:{"result":"hello121","basePath":"http://localhost:8080","method":"GET","startTime":1645883742030,"uri":"/TestLog/Test","url":"http://localhost:8080/TestLog/Test","spendTime":4695}