Spring の @RequestBody および @ResponseBody アノテーション 質問する

Spring の @RequestBody および @ResponseBody アノテーション 質問する

@RequestBodySpring 3 のおよびアノテーションについて説明してくれる人はいますか@ResponseBody? これらは何のためにあるのですか? 例があれば教えてください。

ベストアンサー1

ドキュメントには「16.3.3.4 @RequestBody アノテーションによるリクエストボディのマッピングそして、ある人が16.3.3.5 @ResponseBody アノテーションによるレスポンス本文のマッピングこれらのセクションを参照することをお勧めします。関連事項:@RequestBodyjavadoc、@ResponseBodyjavadocs

使用例は次のようになります。

JQuery のような JavaScript ライブラリを使用すると、次のような JSON オブジェクトを投稿できます。

{ "firstName" : "Elmer", "lastName" : "Fudd" }

コントローラーメソッドは次のようになります。

// controller
@ResponseBody @RequestMapping("/description")
public Description getDescription(@RequestBody UserStats stats){
    return new Description(stats.getFirstName() + " " + stats.getLastname() + " hates wacky wabbits");
}

// domain / value objects
public class UserStats{
    private String firstName;
    private String lastName;
    // + getters, setters
}
public class Description{
    private String description;
    // + getters, setters, constructor
}

もしあなたがジャクソンクラスパスに(そして<mvc:annotation-driven>セットアップ後、Spring は受信した JSON を投稿本文の UserStats オブジェクトに変換し (@RequestBody注釈を追加したため)、返されたオブジェクトを JSON にシリアル化します (@ResponseBody注釈を追加したため)。そのため、ブラウザー/クライアントには次の JSON 結果が表示されます。

{ "description" : "Elmer Fudd hates wacky wabbits" }

完全な動作例については、私の以前の回答を参照してください。https://stackoverflow.com/a/5908632/342852

注: RequestBody / ResponseBody は、もちろん JSON に限定されず、プレーン テキストや XML を含む複数の形式を処理できますが、おそらく JSON が最もよく使用される形式です。


アップデート

Spring 4.x 以降では、通常は@ResponseBodyメソッド レベルではなく@RestControllerクラス レベルで使用することで同じ効果が得られます。

以下は公式からの引用ですSpring MVC ドキュメント:

@RestController作成された注釈それはそれ自体メタ注釈付き@Controllerおよびを使用して@ResponseBody、すべてのメソッドが型レベルの@ResponseBodyアノテーションを継承し、ビュー解決と HTML テンプレートによるレンダリングではなく、レスポンス本文に直接書き込むコントローラーを示します。

おすすめ記事