BankSystem, 2022년 1월 12일
CUSTOM 404 NOT FOUND
404 No Handler Found는 기본적으로 Dispatcher Servlet에서 처리한다. 즉 ControllerAdice에서 처리할 수 없다.
이를 가능하게 하기 위해서는 아래 내용을 application.yml에 추가해주어야 한다.
spring:
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: false
-
throw-exception-if-no-handler-found
true로 설정시 dispatcher servlet에서 요청에 대한 핸들러를 찾을 때 요청을 처리할 수 없는 핸들러가 없다면 (mappedHandler가 null이라면) NoHandlerFoundException 예외를 발생시킨다. -
add-mappings
false로 설정시 스프링에서 기본적으로 제공하는 정적 자원 요청 매핑을 사용하지 않는다.
위와 같이 추가한 이후에는 controlleradvice에서 NoHandlerFoundException을 처리할 수 있게 된다.
@ExceptionHandler(NoHandlerFoundException.class)
public ResponseEntity<ErrorResponse> noHandlerFoundException(NoHandlerFoundException e) {
ErrorResponse errorResponse = ErrorResponse.builder()
.status(ErrorCode.NO_HANDLER_FOUND.getStatus())
.message(ErrorCode.NO_HANDLER_FOUND.getMessage())
.code(ErrorCode.NO_HANDLER_FOUND.getCode())
.detail("api does not exist")
.build();
return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
}
참고
- https://velog.io/@ydh6226/Spring-404-NotFound-Response-Custom
- https://velog.io/@ez2fly/404NotFound-%EC%97%90-%EB%8C%80%ED%95%9C-Exception-%EC%B2%98%EB%A6%AC
Author And Source
이 문제에 관하여(BankSystem, 2022년 1월 12일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yshjft/BankSystem-2022년-1월-12일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)