Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringAOP中访问实际的方法参数名称?_Java_Spring_Reflection_Aop - Fatal编程技术网

Java 如何在SpringAOP中访问实际的方法参数名称?

Java 如何在SpringAOP中访问实际的方法参数名称?,java,spring,reflection,aop,Java,Spring,Reflection,Aop,我在这方面急需帮助。我一直在寻找一种方法来做到这一点。 我正在Tomcat7中运行的web应用程序中使用SpringAOP。 我试图使用@Before通知打印方法切入点的实际参数的名称和值。 首先,我认为简单地用-g选项编译类文件就可以了。那没用。 然后我在某个地方的一篇帖子中读到,使用AspectJ加载时编织肯定会奏效。因此,我为Tomcat 7做了以下工作: 在my context.xml中 <Loader loaderClass="org.springframework.instru

我在这方面急需帮助。我一直在寻找一种方法来做到这一点。 我正在Tomcat7中运行的web应用程序中使用SpringAOP。 我试图使用@Before通知打印方法切入点的实际参数的名称和值。 首先,我认为简单地用-g选项编译类文件就可以了。那没用。 然后我在某个地方的一篇帖子中读到,使用AspectJ加载时编织肯定会奏效。因此,我为Tomcat 7做了以下工作:

在my context.xml中

<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>

在my config.xml中

<context:load-time-weaver weaver-class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/>

但是当我调用MethodSignature.getParameterNames()时,它仍然返回null

所以我的问题是:
有没有办法从通知中获取方法的参数名?如果是,如何进行?

需要使用调试信息进行编译


然后,您可以使用org.springframework.core.LocalVariableTableParameterNameDiscoveryr的实例来解析参数名称。

Bozho,感谢您的回复。就像你一样,我认为LocalVariableTableParameterNameDiscoveryr可以做到这一点,但事实并非如此。还有其他建议吗?您有调试信息吗?因为我已经用过了,而且还能用,所以我又看了一眼我的设置。我怀疑代理类和/或接口可能会成为阻碍。我的假设证明是正确的@Bozho:使用LocalVariableTableParameterNameDiscoveryr确实解决了这个问题。