3

Spring Frameworkプロジェクトのソースを閲覧すると、次のようなメソッドに出くわしました。

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

カジュアルなJavaユーザーであるため、これまでに遭遇したことはありません。私の知る限り、@記号はJavaアノテーションの前にありますが、メソッドシグネチャ自体にアノテーションがあるように見えます。@ResponseBody@RequestParamセクションは何をしていますか?

4

3 に答える 3

10

これ@ResponseBodyは実際には単なるプレーンジェーンメソッドアノテーションです。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を使用することを計画している場合は、人生で少なくとも1回はそのすべてを読むことをお勧めします。

于 2012-05-08T21:11:39.463 に答える
0

アノテーションは、Javaコード内の多くの場所に追加できます。@Target正確な場所を見つける良い方法は、メタアノテーションを調べることです。このアノテーションは他のアノテーションに適用され、コンパイラに有効な場所を記述します。とにかく、@Target注釈はの配列を取り、ElementTypeこの列挙には注釈を適用するためのすべての有効な場所があります。

Java 6以降、ElementType列挙型には次の値が含まれています。

ANNOTATION_TYPE、、、、、、、およびCONSTRUCTOR_ FIELD_ LOCAL_VARIABLE_ METHOD_ PACKAGE_PARAMETERTYPE

あなたの例では、@RequestMapping@ResponseBodyは両方ともMETHODレベルアノテーションですが、まったく同じ場所(メソッドスコープ修飾子の前と後)に適用されておらず@RequestParamPARAMETERレベルアノテーションです。

于 2012-05-08T23:20:37.677 に答える