java获取aop中所有参数并找到对应的参数名包括对象参数
在Java中,要获取AOP中的所有参数,并找到对应的参数名,可以使用反射来实现。以下是一个示例代码:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import java.lang.reflect.Parameter;
public class MyAspect {
public void myAdvice(JoinPoint joinPoint) {
// 获取方法的参数
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Parameter[] parameters = signature.getMethod().getParameters();
// 获取方法的参数名
String[] parameterNames = signature.getParameterNames();
// 遍历参数列表
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
String parameterName = parameterNames[i];
// 判断参数类型
if (parameter.getType().isPrimitive()) {
// 基本数据类型参数
System.out.println("参数名:" + parameterName + ", 参数值:" + joinPoint.getArgs()[i]);
} else {
// 对象参数
System.out.println("参数名:" + parameterName + ", 参数值:" + joinPoint.getArgs()[i].toString());
}
}
}
}
在上述代码中,myAdvice方法是一个AOP的通知方法,通过JoinPoint参数获取连接点的信息。通过MethodSignature可以获取方法的参数和参数名。然后,通过遍历参数列表,可以获取到每个参数的类型和值。对于基本数据类型参数,可以直接使用joinPoint.getArgs()[i]获取参数值。对于对象参数,可以使用joinPoint.getArgs()[i].toString()将其转换为字符串
原文地址: https://www.cveoy.top/t/topic/hNJP 著作权归作者所有。请勿转载和采集!