您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何進行@Aspect注解的詳細分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
spring中支持9種@Aspect注解的函數,它們表示用不同的方式描述目標類的連接點,它們主要分別4種類型:
方法切點函數:通過描述目標類信息定義連接點
方法入參切點函數: 通過描述目標類方法入參的信息定義連接點
目標類切點函數:通過描述目標類類型信息定義連接點
代理類切點函數:通過描述目標類的代理類的信息定義連接點
下面我們看一下具體的切點函數的具體使用。
函數入參的通配符
* 匹配任意字符,但它可能匹配上下文中的一個元素
.. 匹配任意字符,可以匹配上下文中的多個元素
+ 表示按類型匹配指定類的所有類,必須跟在類名后面,也就是會匹配繼承或者擴展指定類的所有類,包括指定類
@Aspect注解按是否支持通配付符及支持程度上分可以分為3類:
支持所有通配符:excution()、within()、
支持+通配符:args()、this()、target()
不支持通配符:@args()、@within()、@target()、@annotation()
邏輯運算符
我們知道切點是由函數組成,切點與切點之間可以進行邏輯運算,這就組合成了復合切點,下面我們看一下spring中支持的切點運算符:
&& 與操作符 也就是執行切點的交集運算,在spring中除了使用&&符號我們還可直接使用and關鍵字
|| 或操作符 也就是執行切點的并集運算,同樣在spring中我們除了可以使用|| 符號外我們還可以使用or關鍵字
!非操作符 也就是執行反集運算,同樣在spring中我們除了可以使用!符號外我們還可以使用not關鍵字
不同的增強類型
@Before
前置增強,相當于BeforeAdvice功能,該注解有兩個屬性它們分別是:
value: 用于定義切點
argNames: 因為無法通過Java反射獲取到方法的入參名,所以如果我們想在運行期內,通過反射技術解析該切點,就可以在此屬性中添加該方法的參數名,多個參數用逗號分隔
@AfterRetruning
后置增強,相當于AfterRetruningAdvice,該注解有4個屬性:
value: 同上
pointcut: 表示切點信息,和value屬性一樣,如果顯示的設置pointcut則會覆蓋value
returning: 將目標對象方法的返回值綁定給增強的方法
argNames: 同上
@Around
環繞增強,相當于MethodInterceptor,該注解主要有2個屬性:
value: 同上
argNames: 同上
@AfterThrowing
拋出增強,相當于ThrowsAdvice,該注解有4個屬性:
value: 同上
pointcut: 同上
throwing: 將拋出的異常綁定到增強的方法中
argNames: 同上
@After
Final增強,不管是拋出異常還是正常退出,該增強都會執行,主要的功能是用于資源釋放,該注解也有2個屬性:
value:同上
argNames: 同上
@DeclareParents
引介增強,相當于IntroductionInterceptor,該注解有兩個屬性:
value: 同上
defaultImpl: 默認的接口實現類
關于如何進行@Aspect注解的詳細分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。