Spring 3.2 MVC を使用してこれが実現可能かどうかは、本当にわかりません。
私のコントローラーには以下のように宣言されたメソッドがあります:
@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody List<Foo> getAll(){
return service.getAll();
}
質問:
- の意味は何ですか
@ResponseStatus(HttpStatus.OK)
? - メソッドが常に
HttpStatus.OK
ステータス コードを返すことを意味します。 - サービス層から例外がスローされた場合はどうなりますか?
- 例外が発生した場合に応答ステータスを変更できますか?
- 同じメソッド内で条件に応じて複数の応答ステータスを処理するにはどうすればよいですか?
ベストアンサー1
@ResponseStatus(HttpStatus.OK)
は、処理メソッドが正常に返された場合、リクエストは OK を返すことを意味します (デフォルトの応答ステータスは であるため、このアノテーションはこのケースでは冗長ですHttpStatus.OK
)。メソッドが例外をスローした場合、アノテーションは適用されません。代わりに、ステータスは Spring によって例外ハンドラーを使用して決定されます。
同じメソッド内で条件に応じて複数の応答ステータスを処理するにはどうすればよいですか?
その質問すでに質問されています。
例外が発生したときに応答ステータスを変更できますか
選択肢は 2 つあります。例外クラスが独自のものである場合は、例外クラスに を注釈として付けることができます@ResponseStatus
。もう 1 つの選択肢は、 を注釈として付けた例外ハンドラーをコントローラー クラスに提供し@ExceptionHandler
、例外ハンドラーに応答ステータスを設定させることです。