2014-05-13 2 views
0

간단한 스프링 부팅 웹 응용 프로그램 API를 실행 중입니다. 문제는 내가 예외를 던지거나 봄이 예외를 throw 할 때 예외가 항상 Http에 던져지며 기본 오류 페이지를 봄. 오류를 다른 mediatype, 예를 들어 JSON으로 기본 설정하는 방법이 있습니까? 기본적으로 나는 항상 오류가 있어도 json을 원합니다. 그건 그냥 일반 끔찍한로 나는 각 예외 유형에 대한 사용자 지정 @ExceptionHandler를 작성해야하고 싶지 않아 ..스프링 오류의 mediatype 변경

업데이트 :

@ControllerAdvice 
@EnableAutoConfiguration 
public class ErrorWritter extends ResponseEntityExceptionHandler { 

    @Override 
    public ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request) { 
    String response = "{\"status\":\"" 
     + status.toString() 
     + "\",\"generic message\":\"" 
     + status.getReasonPhrase() 
     + "\",\"specific message\":\"" 
     + ex.getMessage() 
     + "\" }"; 

    return new ResponseEntity<Object>(response, headers, status); 
    } 
} 

이하지 않는 : 저는 여기에 현재 시도하고있는 무슨이다 그러나 아무것도하는 것처럼 보입니다. 봄에 내가 이것을 사용하기를 원한다는 것을 인식시키기 위해해야 ​​할 일이 있습니까?

참고 : Java 구성 및 NOT xml 구성을 사용하고 있습니다.

답변

0

의 다음 문서에서 꽤 좋은 정보가있다 : 그 표현을 반환

public class ErrorInfo { 
    public final String url; 
    public final String ex; 

    public ErrorInfo(String url, Exception ex) { 
     this.url = url; 
     this.ex = ex.getLocalizedMessage(); 
    } 
} 

그리고 사용하는 오류 처리기 : 당신 같은 당신의 오류에 대한 모델을 만들 수 있습니다 http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

은 모델 :

@ResponseStatus(HttpStatus.BAD_REQUEST) 
@ExceptionHandler(MyBadDataException.class) 
@ResponseBody ErrorInfo handleBadRequest(HttpServletRequest req, Exception ex) { 
    return new ErrorInfo(req.getRequestURL(), ex); 
} 

@ExceptionHandler의 봄 작동 방식에 대한 자세한 내용은 spring docs : 0을 참조하십시오.http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers

+0

스프링 자체에서 발생하는 오류도 어떻게 처리 할 수 ​​있습니까? –

+0

같은 글에서'@ ControllerAdvice'에 대한 참고 자료를 찾을 수 있습니다. '@ ExceptionHandler'를 전역 적으로 사용하는 가장 좋은 방법입니다. –

+0

@pragmatical @DaveSyer 글쎄, 내가해야 할 일은 ResponseEntityExceptionHandler를 확장하는 것 뿐이라고 말한다. 나는 내가 지금까지 가지고있는 것으로 내 질문을 편집했다. –

관련 문제