日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring——AOP

發布時間:2025/4/5 javascript 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring——AOP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AOP

AOP概述

  • AOP(Aspect-Oriented Programming,面向切面編程):是一種新的方法論,是對傳統 OOP(Object-Oriented Programming,面向對象編程)的補充。
  • AOP編程操作的主要對象是切面(aspect),而切面模塊化橫切關注點。
  • AOP的好處:
    1.每個事物邏輯位于一個位置,代碼不分散,便于維護和升級
    2.業務模塊更簡潔,只包含核心業務代碼

AOP術語

  • 2.1橫切關注點
    從每個方法中抽取出來的同一類非核心業務。(抽離到方法中處理非核心業務)
  • 2.2切面(Aspect)
    封裝橫切關注點信息的類,每個關注點體現為一個通知方法。
  • 2.3通知(Advice)
    切面必須要完成的各個具體工作
  • 2.4目標(Target)
    被通知的對象
  • 2.5代理(Proxy)
    向目標對象應用通知之后創建的代理對象
  • 2.6連接點(Joinpoint)
    橫切關注點在程序代碼中的具體體現,對應程序執行的某個特定位置。例如:類某個方法調用前、調用后、方法捕獲到異常后等。在應用程序中可以使用橫縱兩個坐標來定位一個具體的連接點;
  • 2.7切入點(pointcut)
    定位連接點的方式。每個類的方法中都包含多個連接點,所以連接點是類中客觀存在的事物。如果把連接點看作數據庫中的記錄,那么切入點就是查詢條件——AOP可以通過切入點定位到特定的連接點。
    切點通過org.springframework.aop.Pointcut 接口進行描述,它使用類和方法作為連接點的查詢條件。

AOP細節

1.切入點表達式

1.1作用:通過表達式的方式定位一個或多個具體的連接點。
1.2語法細節:
①切入點表達式的語法格式
execution([權限修飾符] [返回值類型] [簡單類名/全類名] [方法名]([參數列表]))

②舉例說明

表達式execution(* com.atguigu.spring.ArithmeticCalculator.*(..))
含義ArithmeticCalculator接口中聲明的所有方法。第一個“*”代表任意修飾符及任意返回值。第二個“*”代表任意方法?!?.”匹配任意數量、任意類型的參數。若目標類、接口與該切面類在同一個包中可以省略包名。

切入點表達式應用到實際的切面類中

2.當前連接點細節
2.1概述
切入點表達式通常都會是從宏觀上定位一組方法,和具體某個通知的注解結合起來就能夠確定對應的連接點。那么就一個具體的連接點而言,我們可能會關心這個連接點的一些具體信息,例如:當前連接點所在方法的方法名、當前傳入的參數值等等。這些信息都封裝在JoinPoint接口的實例對象中。
2.2JoinPoint

3.通知

3.1概述
在具體的連接點上要執行的操作。
一個切面可以包括一個或者多個通知。
通知所使用的注解的值往往是切入點表達式。

3.2前置通知
前置通知:在方法執行之前執行的通知
使用@Before注解

3.3后置通知
后置通知:后置通知是在連接點完成之后執行的,即連接點返回結果或者拋出異常的時候
使用@After注解

3.4返回通知
返回通知:無論連接點是正常返回還是拋出異常,后置通知都會執行。如果只想在連接點返回的時候記錄日志,應使用返回通知代替后置通知。
使用@AfterReturning注解
在返回通知中訪問連接點的返回值:
1.在返回通知中,只要將returning屬性添加到@AfterReturning注解中,就可以訪問連接點的返回值。該屬性的值即為用來傳入返回值的參數名稱
2.必須在通知方法的簽名中添加一個同名參數。在運行時Spring AOP會通過這個參數傳遞返回值
3.原始的切點表達式需要出現在pointcut屬性中

3.5異常通知
將throwing屬性添加到@AfterThrowing注解中,也可以訪問連接點拋出的異常。Throwable是所有錯誤和異常類的頂級父類,所以在異常通知方法可以捕獲到任何錯誤和異常。
如果只對某種特殊的異常類型感興趣,可以將參數聲明為其他異常的參數類型。然后通知就只在拋出這個類型及其子類的異常時才被執行

3.6環繞通知
- 環繞通知是所有通知類型中功能最為強大的,能夠全面地控制連接點,甚至可以控制是否執行連接點。
對于環繞通知來說,連接點的參數類型必須是ProceedingJoinPoint。它是 JoinPoint的子接口,允許控制何時執行,是否執行連接點。
在環繞通知中需要明確調用ProceedingJoinPoint的proceed()方法來執行被代理的方法。如果忘記這樣做就會導致通知被執行了,但目標方法沒有被執行。
注意:環繞通知的方法需要返回目標方法執行之后的結果,即調用 joinPoint.proceed();的返回值,否則會出現空指針異常。

3.7重用切入點定義
在編寫AspectJ切面時,可以直接在通知注解中書寫切入點表達式。但同一個切點表達式可能會在多個通知中重復出現。
在AspectJ切面中,可以通過@Pointcut注解將一個切入點聲明成簡單的方法。切入點的方法體通常是空的,因為將切入點定義與應用程序邏輯混在一起是不合理的。
切入點方法的訪問控制符同時也控制著這個切入點的可見性。如果切入點要在多個切面中共用,最好將它們集中在一個公共的類中。在這種情況下,它們必須被聲明為public。在引入這個切入點時,必須將類名也包括在內。如果類沒有與這個切面放在同一個包中,還必須包含包名。
其他通知可以通過方法名稱引入該切入點

3.8指定切面的優先級
在同一個連接點上應用不止一個切面時,除非明確指定,否則它們的優先級是不確定的。
切面的優先級可以通過實現Ordered接口或利用@Order注解指定
實現Ordered接口,getOrder()方法的返回值越小,優先級越高
若使用@Order注解,序號出現在注解中

轉載于:https://www.cnblogs.com/mazhitao/p/7454876.html

總結

以上是生活随笔為你收集整理的Spring——AOP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。