2017-03-20 8 views
1

私は安らかなエンドポイントを持つスプリングブートアプリケーションを持っています。私は応答を管理することができるように、基本的に例外をトラップするグローバルエラーハンドラを持っています(つまり、応答で大きなJavaスタックトレースを公開したくありません)。スプリングブート - RESTエンドポイントを保護するためのグローバルエラーハンドラを設定する

これを行うにはどうすればよいでしょうか?

答えて

4

目的のタイプのすべての例外をキャッシュする例外ハンドラを使用してコントローラのアドバイスクラスを作成します。

@ControllerAdvice 
public class GlobalExceptionHandler { 

    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); 

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 
    @ExceptionHandler(Exception.class) 
    public void handleAll(Exception e) { 
     log.error("Unhandled exception occurred", e); 
    } 

} 

好きな場合は、通常のコントローラメソッドと同じようにメソッドからボディを返すか、単純にHTTPステータスコードを返すことができます。上記のコードは、@ResponseStatusアノテーションを使用して500を返します。

特定の例外タイプのみをキャッチすることができます。 @ExceptionHandlerアノテーションは、value属性として例外の配列を受け入れます。

関連する問題