3

浏览 spring 框架项目的源代码时,我遇到了一个看起来像这样的方法:

@RequestMapping("primitive")
public @ResponseBody String primitive(@RequestParam Integer value) {
    return "Converted primitive " + value;
}

作为一个普通的java用户,我以前没有遇到过这个。据我所知,@ 符号在 java 注释之前,但方法签名本身似乎有注释。@ResponseBody@RequestParam部分在做什么?

4

3 回答 3

10

@ResponseBody实际上只是一个 Plain-Jane Method注释。您可以将它们放在 scope 关键字之后。

@RequestParam注释不是方法签名的一部分。这是一个参数注释

于 2012-05-08T21:06:27.467 回答
2

这些注释是特定于 Spring 的,因此您需要深入了解 Spring 以了解所有注释及其含义。

每当我需要在 Spring 中学习新东西时,我总是会跳回文档:http ://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

如果您打算使用 Spring 进行企业开发,那么在您的生活中至少通读一遍整本书是件好事。

于 2012-05-08T21:11:39.463 回答
0

注释可以在 Java 代码中的许多地方添加。找出确切位置的一个好方法是查看@Target元注释。此注解应用于其他注解,以向编译器描述对其有效的位置。无论如何,@Target注释需要一个 数组ElementType,并且这个枚举具有应用注释的所有有效位置。

从 Java 6 开始,ElementType枚举包含以下值:

ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE,PARAMETERTYPE

在您的示例中,@RequestMappingand@ResponseBody都是METHOD级别注释,即使它们没有应用在完全相同的位置(一个在方法范围修饰符之前和一个之后),并且@RequestParamPARAMETER级别注释。

于 2012-05-08T23:20:37.677 回答