アノテーション駆動型 Spring MVC で @ResponseStatus を動的に変更する 質問する

アノテーション駆動型 Spring MVC で @ResponseStatus を動的に変更する 質問する

Spring 3.2 MVC を使用してこれが実現可能かどうかは、本当にわかりません。

私のコントローラーには以下のように宣言されたメソッドがあります:

@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody List<Foo> getAll(){
    return service.getAll();
}

質問:

  1. の意味は何ですか@ResponseStatus(HttpStatus.OK)
  2. メソッドが常にHttpStatus.OKステータス コードを返すことを意味します。
  3. サービス層から例外がスローされた場合はどうなりますか?
  4. 例外が発生した場合に応答ステータスを変更できますか?
  5. 同じメソッド内で条件に応じて複数の応答ステータスを処理するにはどうすればよいですか?

ベストアンサー1

@ResponseStatus(HttpStatus.OK)は、処理メソッドが正常に返された場合、リクエストは OK を返すことを意味します (デフォルトの応答ステータスは であるため、このアノテーションはこのケースでは冗長ですHttpStatus.OK)。メソッドが例外をスローした場合、アノテーションは適用されません。代わりに、ステータスは Spring によって例外ハンドラーを使用して決定されます。

同じメソッド内で条件に応じて複数の応答ステータスを処理するにはどうすればよいですか?

その質問すでに質問されています

例外が発生したときに応答ステータスを変更できますか

選択肢は 2 つあります。例外クラスが独自のものである場合は、例外クラスに を注釈として付けることができます@ResponseStatus。もう 1 つの選択肢は、 を注釈として付けた例外ハンドラーをコントローラー クラスに提供し@ExceptionHandler、例外ハンドラーに応答ステータスを設定させることです。

おすすめ記事