【问题标题】:How do I access actual method argument names in Spring AOP?如何在 Spring AOP 中访问实际的方法参数名称?
【发布时间】:2012-04-26 13:54:57
【问题描述】:

我非常需要这方面的帮助。我一直在寻找一种方法来做到这一点。 我在 Tomcat 7 中运行的 Web 应用程序中使用 Spring AOP。 我正在尝试使用@Before 建议来打印方法切入点的实际参数的名称和值。 首先,我认为只需使用 -g 选项编译类文件就可以了。那没有用。 然后我在某处的帖子中读到使用 AspectJ 加载时编织肯定会成功。所以我为 Tomcat 7 做了以下操作:

在我的 context.xml 中

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

在我的 config.xml 中

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

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

所以我的问题是: 有没有办法从建议中获取方法的参数名称?如果有怎么办?

【问题讨论】:

    标签: java spring reflection aop


    【解决方案1】:

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

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

    【讨论】:

    • 博卓,感谢您的回复。就像您一样,我认为 LocalVariableTableParameterNameDiscoverer 可以解决问题,但事实并非如此。还有其他建议吗?
    • 你有调试信息吗?因为我用过它并且有效
    • 我再次查看了我的设置。我怀疑代理类和/或接口可能会妨碍您。我的假设变成了正确的。 @Bozho:使用 LocalVariableTableParameterNameDiscoverer 确实可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多