注释如何访问参数信息?

时间:2012-07-03 15:29:13

标签: java reflection spring-mvc

在spring-mvc中,可以使用@RequestParam构建控制器调用的查询。如果未提供该值,则默认为方法参数名称。

示例:

@RequestMapping("/hello")
@ResponseBody
public String hello(@RequestParam String name)
{
    return "hello "+name; 
}

映射到

/hello?name=x 

我的问题是这个。 spring如何绑定此信息(甚至访问它)?在运行时丢弃了没有参数名称?它是否使用像paranamer这样的库?

1 个答案:

答案 0 :(得分:2)

只有在将类编译为here时启用了调试才能生效。 然后编译器保留信息。

作为最后一个春季版本之一,他们将其扩展为包含构造函数。对我来说似乎有点冒险 - 如果你忘记添加调试选项,那么你的应用程序就会停止工作!

因此,一种可能的方法(将debug设置为true)似乎是使用字节码操作,并且在使用asm时有this获取它们的示例。我不知道这是否和Spring一样。