spring aop 攔截指定註解的方法
阿新 • • 發佈:2021-02-07
spring aop 攔截指定註解的方法
我的目的:
使用 aop 攔截指定的某些方法,新增自己的業務邏輯處理。
我的效果就是:
execution(@com.my.annotation.MyAnnotation * com.my..*(..))
我的 aop 只攔截在某個包下的所有的帶有自定義註解@com.my.annotation.MyAnnotation 的方法。
我想做的事情就:
-
aop 攔截 controller 層:做冪等操作,在一定時間內,同一個 token 的請求只處理第一次,拒絕其他次。
-
aop 攔截 service 層:還是與冪等操作相關,處理某個使用者多次提交表單時的類似併發,也就是對某個使用者的某份資料的修改是序列化的。第一次處理某個使用者的資料未完成時,其他呼叫修改同一個使用者的資料時就阻塞。例如使用者的餘額的改變。
我的難題
通常 aop 的這樣的 execution(* com.my..controller.*.*(..)) 的寫法,這就限定了類或者方法名稱。而我要實現的是,只要某個方法打上自定義的註解之後,aop 只攔截有這個註解的方法。這樣就可以不受限於類和方法名。
execution 表示式
execution(<修飾符模式>?<返回型別模式><方法名模式>(<引數模式>)<異常模式>?)
我只需要把 “<修飾符模式>” 寫成我的註解即可。因為方法上的註解也是方法的修飾。