2017-09-28 26 views
2

私はSpring Bootを使用していますが、私のビジネスロジックコードは例外クラスを使用しています。一つは、次のようになります。SpringのカスタムHttpステータスコード

@ResponseStatus(HttpStatus.BAD_REQUEST) 
public class ExternalDependencyException extends RuntimeException { 

    public ExternalDependencyException() { 
     super("External Dependency Failed"); 
    } 
    public ExternalDependencyException(String message) { 
     super(message); 
    } 

} 

まあ今は事前に定義されたHTTPステータスコードがフィッティングされていない例外があるので、私はまだ自由である460または類似のようなステータスコードを使用したいのですが、注釈はResponseStatusは列挙型HttpStatusの値を受け入れるだけです。 Java Springブート環境でカスタムステータスコードを持つExceptionクラスを実現する方法はありますか?

答えて

3

@ResponseStatusでこれを行う方法はわかりません。

解決方法の1つは、@RestControllerAdviceです。 これにより、例外の返却方法をカスタマイズすることができます。

@RestControllerAdvice 
public class WebRestControllerAdvice { 

    @ExceptionHandler(ExternalDependencyException.class) 
    public String handleGitlabException(ExternalDependencyException ex, HttpServletResponse response) { 
     try { 
      response.sendError(460); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return ex.getMessage(); 
    } 
} 
+0

これは4.3以降であることに注意してください – mdeterman

関連する問題