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