一些有關spring中aop的術語和基礎概念

2021-09-28 06:25:22 字數 1221 閱讀 4461

如果了解過spring,都應該熟悉或者了解過aop即面向切面程式設計的概念,但是在學習aop時有一些術語總是在困擾著我們,本篇文章就spring aop中用到的術語和基礎概念進行詳細的講解:

如果看完上面的術語和基本概念還是對aop的概念比較模糊,可以看一下下面這個例子:

假設有乙個銀行系統,有三個操作,存錢,取錢和轉賬,其中取錢和轉賬需要驗證當前賬戶的餘額,而存錢並不需要。我們可以寫三個方法,這三個方法的方法名分別為depositmoney(),withdrawmoney(),transfermoney();

為了不重複的寫驗證餘額的**,我們可以使用面向切面的思想來編寫**,將驗證餘額的**和系統的核心**(取錢和轉賬)分開,在呼叫withdrawmoney(),transfermoney()前驗證當前賬號的餘額,如果要取的金額和轉賬的金額 超出餘額,則丟擲異常,並且阻止withdrawmoney(),transfermoney()的呼叫。

在這裡,depositmoney(),withdrawmoney(),transfermoney()都是joint point(連線點),而withdrawmoney(),transfermoney()可以通過正規表示式集中起來,這就組成了乙個pointcut(切點),驗證餘額是advice(增強), 這裡可以使用around 來環繞要joint point(連線點),如果餘額不足,就阻止joint point(連線點)繼續執行。而aspect(切面)是pointcut(切點)和advice(增強)的組合,在這裡我們可以把aspect(切面)理解為這樣乙個動作:通過正則來匹配到joint point(連線點)withdrawmoney(),transfermoney(),在呼叫方法之前驗證餘額,如果餘額不足,阻止joint point(連線點)withdrawmoney(),transfermoney()執行

下面是一些常用的advice 的型別

before, 在 join point 前被執行的 advice. 它並不能夠阻止 join point 的執行, 除非丟擲異常

after return,  join point 正常返回後執行的 advice

after throwing,  join point 丟擲異常後執行的 advice

after, 無論 join point 是正常退出還是發生了異常, 都會被執行的 advice.

around , 在 join point 前和 joint point 退出後都執行的 advice. 這個是最常用的 advice.

記一些spring的aop中一些常用獲取引數的方法

如果aspect切點切入的是controller在spring mvc 的配置中加入 獲取request 與response 獲取方法與方法上的注釋 這個我主要是用joinpoint來獲取,獲取方式如下 signature signature joinpoint.getsignature metho...

Spring事務和AOP一些知識點

在開發中,一般都把事務加到service層。和事務相關的註解 transactional 事務管理方式有兩種 程式設計式事務 宣告式事務 宣告式事務 通過註解來使用事務,底層是建立在 aop 的基礎之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前建立或者加入乙個事務,在執行完目標方法之後根...

spring中的一些註解

component是類的通用註解,將bean注入spring容器中 scope是類的作用域註解,用於規定類的作用域 repository是dao層的註解,告訴spring這是持久層 service是service層的註解,告訴spring這是業務邏輯層的 controller是controller層...