2017-11-28 4 views
0

私はSpringブートサービスを持っています。それは/ api/v1のパスを持っているので、新しいapiの/ api/v2パスを追加するようになりました。 しかし、v2のエラー/例外には異なる戻り値などがあります。したがって、RestControllerごとに異なるパスに対して2つの異なる例外ハンドラを作成することは可能ですか? Kayamanが提案されているようSpring Boot - 異なるパスのRestController異なるエラーハンドラ

+0

別のクラスに入れますか? – Kayaman

答えて

0

たぶん、2つのdifferenct例外クラス(V1/V2)

@ControllerAdvice 
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { 

    @ExceptionHandler(V1Exception.class) 
    public ResponseEntity<String> handleException(V1Exception ex) { 
     return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(gson.toJson("[v1]" + ex.getMessage())); 
    } 

    @ExceptionHandler(V2Exception.class) 
    public ResponseEntity<String> handleException(V2Exception ex) { 
     return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(gson.toJson("[v2]" + ex.getMessage())); 
    } 
0

を処理しようとする各RestControllerが異なるパスに2つの異なる例外ハンドラを作成するためだから、可能ですか?

はい、異なる@ControllerAdviceを使用して、@ExceptionHandlerを宣言することができます。しかし、フレームワークに特定のコントローラーを教えてください。@ControllerAdvice

さまざまな方法があります。 @ControllerAdviceパラメータ:

  • v1およびv2コントローラが異なるパッケージにある場合は、basePackages/basePackageClassesをチェックしてください。
  • 注釈。 v1コントローラとv2コントローラのカスタム注釈を作成する必要があります。
  • assignableTypes。
関連する問題