相关疑难解决方法(0)

Spring如何仅通过形式参数名匹配查询参数?

假设我有以下代码片段:

@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选项进行编译,该选项添加包含真实变量名称的调试信息(因为形式参数存储为方法的第一个局部变量)

java bytecode bytecode-manipulation spring-restcontroller

8
推荐指数
1
解决办法
488
查看次数

Spring AOP:访问参数名称

我正在使用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

java spring spring-aop

7
推荐指数
2
解决办法
9523
查看次数