SpringAOP獲取方法引數上的註解

2021-09-25 13:25:07 字數 1634 閱讀 1955

① 如下**,自定義乙個引數註解@test,並將其使用到方法引數上,用於標註需要檢驗的引數

/**

* 自定義註解,用於引數

*/@target(parameter)

@documented

@retention(retentionpolicy.runtime)

public @inte***ce test

/*** 介面層,使用使用@test註解標記引數

*/@restcontroller

public class testcontroller

}

② 通過切面攔截該方法,從連線點獲取signature,並將signature強轉為methodsignature,從而從methodsignature物件可以獲取攔截的方法物件以及方法引數註解

@aspect

@configuration

public class validateaop

@before("validate()")

public void dobefore(joinpoint joinpoint)

//獲取方法,此處可將signature強轉為methodsignature

methodsignature signature = (methodsignature) joinpoint.getsignature();

method method = signature.getmethod();

//引數註解,1維是引數,2維是註解

annotation annotations = method.getparameterannotations();

for (int i = 0; i < annotations.length; i++)

for (annotation annotation : paramann) }}

}}

通過debug**:

可發現連線點實際為methodinvocationproceedingjoinpoint物件,連線點中的signature則為methodsignatureimpl物件,是methodinvocationproceedingjoinpoint的內部類。

methodinvocationproceedingjoinpoint類圖,頂級實現了joinpoint(以後再使用切面的時候,可以看看其他類裡面都擴充套件了哪些方法可以直接使用)

methodsignatureimpl類圖,頂級實現了signature(以後再使用切面的時候,可以看看其他類裡面都擴充套件了哪些方法可以直接使用)

spring aop 妙用 方法引數校驗

業務場景 在實現業務的過程中,往往都需要寫一些繁瑣的判斷引數是否為null的 介面spring aop 加註解實現通用的處理方法,使 更為簡潔 1.先寫好註解類 retention retentionpolicy.runtime target documented public inte ce jp...

Spring AOP(六)通知獲取引數

在之前aop的文章中,大部分我們沒有給通知傳遞引數。有時候我們希望能夠傳遞引數給通知。我們只需要子啊切點處加入對應的正則式就可以了。當然,對於非環繞通知我們還可以使用乙個連線點 pointcut 型別的引數,通過它也可以獲取引數。切面類myaspect package com.lay.springb...

Spring Aop 修改目標方法引數和返回值

首先使用spring aop需要在spring的配置檔案中假如 一 新建註解 target retention retentionpolicy.runtime documented public inte ce handlefield二 建立切面 component changeidnoaophan...