假设我有以下代码片段:
@RequestMapping(method = RequestMethod.GET)
public List<Article> getArticles(@RequestParam int offset,
@RequestParam int limit) {
...
}
Run Code Online (Sandbox Code Playgroud)
当参数名称未明确声明为注释参数时,Spring如何将HTTP查询参数与正确的形式参数匹配?
它是否假设形式参数名称始终存在于字节码中?
据我了解,并非总是如此.只有在以下情况下才能从字节码中检索形式参数名称:
a)类文件已使用-parameters javac选项编译
b)类文件已使用-g(或-g:vars)javac选项进行编译,该选项添加包含真实变量名称的调试信息(因为形式参数存储为方法的第一个局部变量)
我正在使用Spring 3.x,Java 6.
我有一个带有以下连接点的@Around方面:
@Around("execution(public * my.service.*.*Connector.*(..))")
Run Code Online (Sandbox Code Playgroud)
因此,我基本上对拦截所有对类的公共方法的调用感兴趣,类名以"Connector"结尾.到现在为止还挺好.
现在,在我的方面,我想访问方法的实际参数名称:
public doStuff(String myarg, Long anotherArg)
Run Code Online (Sandbox Code Playgroud)
myarg和另一个Arg
我明白使用:
CodeSignature signature = (CodeSignature)jointPoint.getSignature();
return signature.getParameterNames();
Run Code Online (Sandbox Code Playgroud)
将实际工作,但只有我用" -g "标志(完全调试)编译代码,我宁愿不这样做.
有没有其他方法可以访问这种运行时信息.
谢谢L