1. 程式人生 > 其它 >spring aop 攔截指定註解的方法

spring aop 攔截指定註解的方法

技術標籤:springaopjavaspringaop

spring aop 攔截指定註解的方法

我的目的:

使用 aop 攔截指定的某些方法,新增自己的業務邏輯處理。

我的效果就是:

	execution(@com.my.annotation.MyAnnotation * com.my..*(..)) 
	我的 aop 只攔截在某個包下的所有的帶有自定義註解@com.my.annotation.MyAnnotation 的方法。

我想做的事情就:

  1. aop 攔截 controller 層:做冪等操作,在一定時間內,同一個 token 的請求只處理第一次,拒絕其他次。

  2. aop 攔截 service 層:還是與冪等操作相關,處理某個使用者多次提交表單時的類似併發,也就是對某個使用者的某份資料的修改是序列化的。第一次處理某個使用者的資料未完成時,其他呼叫修改同一個使用者的資料時就阻塞。例如使用者的餘額的改變。

我的難題

通常 aop 的這樣的 execution(* com.my..controller.*.*(..)) 的寫法,這就限定了類或者方法名稱。而我要實現的是,只要某個方法打上自定義的註解之後,aop 只攔截有這個註解的方法。這樣就可以不受限於類和方法名。

execution 表示式

	execution(<修飾符模式>?<返回型別模式><方法名模式>(<引數模式>)<異常模式>?)
	我只需要把 “<修飾符模式>” 寫成我的註解即可。因為方法上的註解也是方法的修飾。