Error에 대한 일관성 있는 리턴 타입
ErrorResponse 객체를 만들어 놓고, 엉뚱하게 String을 반환하려고 했었다.
- as is
if (bindingResult.hasErrors()) { String errorMessage = getErrorMessage(bindingResult); return ResponseEntity.badRequest().body(errorMessage); }
- to be
if (bindingResult.hasErrors()) { return ResponseEntity.badRequest().body(ErrorResponse.of(bindingResult)); }
ControllerAdvice의 Exception Type을 제한하기
예를 들어 리소스를 못찾을때 각 리소스 마다 XXXNotFoundException을 만들어 던진다고 하자
- UserNotFoundException
- PostNotFoundException
- …
ControllerAdvice에서 ExceptionHandler에 CustomException을 모두 등록하지 말고, NotFoundException이라는 것을 대표로 등록하고 각 파생되는 것들을 상속해서 만들자.