在springboot中獲取方法的參數名有兩種方式
用來驗證的方法,可以看到參數名有兩個,一個test,一個num
public String getString(String test,Integer num) { return ""; }
1.使用spring的LocalVariableTableParameterNameDiscoverer
定義使用類
private static LocalVariableTableParameterNameDiscoverer parameterNameDiscovere = new LocalVariableTableParameterNameDiscoverer();
我這裏是在aop使用,所以使用ProceedingJoinPoint獲取方法,parameterNameDiscovere.getParameterNames()需要傳入方法
String[] parameterNames = parameterNameDiscovere.getParameterNames(getMethod((ProceedingJoinPoint) joinPoint));
for (String parameterName : parameterNames) {
logger.info(parameterName);
}
輸出結果,看着是按順序正確輸出了參數名
test
num
如果方法沒有參數,parameterNames返回爲null
2.使用AOP時候的ProceedingJoinPoint
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
String[] strings = methodSignature.getParameterNames();
System.out.println(Arrays.toString(strings));
輸出
[test, num]
目前是總結了兩種比較方便的方法,還有好的可以評論給我。