@ControllerAdvice(annotations = RepositoryRestController.class)
public class GenericExceptionHandler {
@Autowired
private MessageSource messageSource;
@ExceptionHandler
public ResponseEntity handle(Exception e, Locale locale) {
String errorMessage = messageSource.getMessage(
"error.message", new Object[]{},locale);
exceptionMessageObject.setMessage(exceptionMessageObject);
return new ResponseEntity(exceptionMessageObject,
new HttpHeaders(), httpStatus);
}
. spring doc 7.15.1 MessageSource
" exceptionMessageObject SpringData REST ?"
wraper , :
public class CustomError {
private HttpStatus status;
private String message;
private Exception originalException;
}
" ? ?"
,
private String resolveExceptionToMessage(Exception exceptio){
if(exceptio instanceof ....){
return messageSource.getMessage("error.message.type1", new Object[]{},locale);
}
return "";
}
@ExceptionHandler ({CustomException1.class}), @ExceptionHandler ({CustomException1.class}).... errror.code,
@ExceptionHandler({ CustomException1.class})
public ResponseEntity handleException1() {
return createError(code for this exceptio 1);
}
@ExceptionHandler({ CustomException2.class})
public ResponseEntity handleException2() {
return createError(code for this exceptio 2);
}
private ResponseEntity createError(String errorCode ) {
CustomError customError = new CustomError();
customError.setHttpStatus(HttpStatus.BAD_REQUEST);
String errorMessage = messageSource.getMessage(
errorCode , new Object[]{},locale);
customError.setMessage(errorMessage );
customError.setOriginalException(e);
return new ResponseEntity<Object>(customError, new HttpHeaders(),
customError.getStatus());
}
httpStatus? spring Data REST ...
public ResponseEntity handle(Exception e, Locale locale) {
CustomError customError = new CustomError();
customError.setHttpStatus(HttpStatus.BAD_REQUEST);
customError.setMessage(resolveExceptionToMessage(e));
customError.setOriginalException(e);
return new ResponseEntity<Object>(customError, new HttpHeaders(),
customError.getStatus());
}