@ControllerAdvice
를 이용한 글로벌 예외처리 작업을 하다가 예외가 발생했습니다.
org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:322) ~[spring-webmvc-6.0.6.jar:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:245) ~[spring-webmvc-6.0.6.jar:6.0.6]
...
아래는 예외가 발생한 코드입니다.
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ErrorResponse> methodArgumentNotValidExceptionHandler(final MethodArgumentNotValidException ex) {
ErrorResponse errorResponse = new ErrorResponse(ex.getMessage(), HttpStatus.BAD_REQUEST);
return ResponseEntity.badRequest().body(errorResponse);
}
}
ReponseEntity로 반환하는 ErrorReponse객체에 getter가 없어서 예외가 발생하였습니다.
public class ErrorResponse {
private final String message;
private final HttpStatus httpStatus;
public ErrorResponse(String message, HttpStatus httpStatus) {
this.message = message;
this.httpStatus = httpStatus;
}
}
@Getter
public class ErrorResponse {
private final String message;
private final HttpStatus httpStatus;
public ErrorResponse(String message, HttpStatus httpStatus) {
this.message = message;
this.httpStatus = httpStatus;
}
}
저는 Lobmok 라이브러리를 사용중이라 @Getter 어노테이션을 추가하였습니다.
Lombok을 사용하지 않는다면 따로 getter 메소드를 생성하면 될 것 같습니다.