public class ResponseStatusExceptionResolver extends AbstractHandlerExceptionResolver implements MessageSourceAware
@ResponseStatus
アノテーションを使用して例外を HTTP 状況コードにマップする HandlerExceptionResolver
。 この例外リゾルバーは、DispatcherServlet
および MVC Java 構成と MVC 名前空間でデフォルトで有効になっています。
4.2 の時点で、このリゾルバーは原因の例外に存在する @ResponseStatus
を再帰的に検索し、4.2.2 の時点でこのリゾルバーはカスタム合成アノテーションで @ResponseStatus
の属性オーバーライドをサポートします。
5.0 現在、このリゾルバーは ResponseStatusException
もサポートしています。
ResponseStatus
, ResponseStatusException
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
ResponseStatusExceptionResolver() |
修飾子と型 | メソッドと説明 |
---|---|
protected ModelAndView | applyStatusAndReason(int statusCode, StringSE reason, HttpServletResponseEE response) 解決済みのステータスコードと理由をレスポンスに適用します。 |
protected ModelAndView | doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler, ExceptionSE ex) ハンドラーの実行中にスローされた特定の例外を実際に解決し、適切であれば特定のエラーページを表す ModelAndView を返します。 |
protected ModelAndView | resolveResponseStatus(ResponseStatus responseStatus, HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler, ExceptionSE ex) @ResponseStatus アノテーションを処理するテンプレートメソッド。 |
protected ModelAndView | resolveResponseStatusException(ResponseStatusException ex, HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler) ResponseStatusException を処理するテンプレートメソッド。 |
void | setMessageSource(MessageSource messageSource) このオブジェクトが実行される MessageSource を設定します。 |
buildLogMessage, getOrder, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setMessageSource(MessageSource messageSource)
MessageSourceAware
通常の Bean プロパティの設定後、InitializingBean の afterPropertiesSet などの init コールバックやカスタム init メソッドの前に呼び出されます。ApplicationContextAware の setApplicationContext の前に呼び出されます。
MessageSourceAware
の setMessageSource
messageSource
- このオブジェクトが使用するメッセージソース @Nullable protected ModelAndView doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex)
AbstractHandlerExceptionResolver
ModelAndView
を返します。特定の例外チェックを適用するために、サブクラスでオーバーライドできます。このテンプレートメソッドは、この解決が適用されるかどうか ( "mappedHandlers" など) を確認した後に呼び出されるため、実装では実際の例外処理をそのまま続行できます。
AbstractHandlerExceptionResolver
の doResolveException
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外時に何も選択されなかった場合は null
(たとえば、マルチパート解決が失敗した場合)ex
- ハンドラーの実行中にスローされた例外 ModelAndView
、または解決チェーンでのデフォルト処理の場合は null
protected ModelAndView resolveResponseStatus(ResponseStatus responseStatus, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex) throws ExceptionSE
@ResponseStatus
アノテーションを処理するテンプレートメソッド。 デフォルトの実装は、アノテーションからのステータスコードと理由で applyStatusAndReason(int, java.lang.String, javax.servlet.http.HttpServletResponse)
に委譲します。
responseStatus
- @ResponseStatus
アノテーション request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外のときに何も選択されていない場合は null
マルチパート解決が失敗した場合 ex
- 例外 ExceptionSE
protected ModelAndView resolveResponseStatusException(ResponseStatusException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws ExceptionSE
ResponseStatusException
を処理するテンプレートメソッド。 デフォルトの実装は、ステータスコードと例外からの理由で applyStatusAndReason(int, java.lang.String, javax.servlet.http.HttpServletResponse)
に委譲します。
ex
- 例外 request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外のときに何も選択されていない場合は null
マルチパート解決が失敗した場合 ExceptionSE
protected ModelAndView applyStatusAndReason(int statusCode, @Nullable StringSE reason, HttpServletResponseEE response) throws IOExceptionSE
デフォルトの実装では、理由がある場合は HttpServletResponse.sendError(int)
EE または HttpServletResponse.sendError(int, String)
EE を使用してレスポンスエラーを送信し、空の ModelAndView を返します。
statusCode
- HTTP ステータスコード reason
- 関連する理由 (null
または空の場合があります)response
- 現在の HTTP レスポンス IOExceptionSE