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