其他分享
首页 > 其他分享> > Spring AOP获取基于参数名称的方法参数值

Spring AOP获取基于参数名称的方法参数值

作者:互联网

是否可以基于Spring AOP中的参数名称获取方法参数值.

MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();

Method method = signature.getMethod();

method.getParameters().getName() 
// possible to get the paramater names 

这种方法将获取参数名称,而不是值.

proceedingJoinPoint.getArgs()

将返回值而不是名称

然后可以根据参数名称获取值吗?

解决方法:

当我不得不使用AOP记录函数参数及其值时,我搜索了相同的东西,但是似乎没有直接的方法可以基于参数名称获取值.

但是我注意到我们由method.getParameters().getName()和procedingJoinPoint.getArgs()返回的值始终保持同步,即对于函数

public void foo(String a, String b)

称为

foo("hello", "world");

method.getParameters().getName()返回[“ a”,“ b”],procedureJoinPoint.getArgs()返回[[hello],“ world”].因此,您可以按索引对数组进行迭代,对于每个索引i,第i个参数名称将对应于第i个参数值.

我找不到有关此行为的支持文档,但是,嘿,这段代码已经在生产服务器上运行了大约一年,从未出现过错误的结果.虽然我很高兴有人可以链接到此行为的文档.您甚至可以深入研究reflection的代码以验证此行为.

标签:spring-aop,spring
来源: https://codeday.me/bug/20191111/2017048.html