Java AOP 获取参数名和参数值 - 示例代码
在Java中,要获取AOP中所有参数并找到对应的参数名,可以使用反射机制。以下是一个示例:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class MyAspect {
public void myAdvice(JoinPoint joinPoint) {
// 获取目标方法的参数名和参数值
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
Method method = methodSignature.getMethod();
String[] parameterNames = methodSignature.getParameterNames();
Object[] parameterValues = joinPoint.getArgs();
// 构造参数名和参数值的映射关系
Map<String, Object> parameterMap = new HashMap<>();
for (int i = 0; i < parameterNames.length; i++) {
parameterMap.put(parameterNames[i], parameterValues[i]);
}
// 打印参数名和参数值
for (Map.Entry<String, Object> entry : parameterMap.entrySet()) {
String parameterName = entry.getKey();
Object parameterValue = entry.getValue();
System.out.println("Parameter name: " + parameterName);
System.out.println("Parameter value: " + parameterValue);
}
}
}
在上面的示例中,myAdvice方法是一个切面方法,用于处理AOP中的通知。通过joinPoint.getSignature()获取目标方法的签名信息,然后通过getMethod()获取目标方法对象。通过getMethodSignature.getParameterNames()获取目标方法的参数名数组,通过joinPoint.getArgs()获取目标方法的参数值数组。
然后,使用一个Map来构造参数名和参数值的映射关系,并打印出每个参数的名字和值。
注意:上述示例使用了AspectJ的JoinPoint和MethodSignature类,需要引入AspectJ的相关依赖。
原文地址: https://www.cveoy.top/t/topic/pwOE 著作权归作者所有。请勿转载和采集!