웹 어플리케이션에서 예외를 처리하는 흐름은 아래 그림과 같습니다.
서블릿으로 예외를 처리하고 오류 페이지를 보여주기 위해서는 WebServerCustomizer 클래스를 만들고 예외 종류에 따라 ErrorPage를 추가하고, 오류 페이지를 위한 전용 컨트롤러를 만들어 주어야 했습니다.
스프링 부트는 위 모든 것들을 기본으로 제공합니다.
스프링 부트의 ErrorMvcAutoConfiguration 클래스는 ErrorPage를 /error 경로로 자동 등록합니다.
BasicErrorController는 /error 경로를 기본으로 받습니다.
BasicErrorController는 /error url을 받는 컨트롤러입니다. 이는 모든 로직이 이미 만들어져있기 때문에 개발자는 위 컨트롤러에 세팅되어있는 위치에 오류페이지만 등록하면 됩니다.
뷰 템플릿
resources/templates/error/500.html
resources/templates/error/5xx.html
정적 리소스( static , public )
resources/static/error/400.html
resources/static/error/404.html
resources/static/error/4xx.html
적용 대상이 없을 때 뷰 이름( error )
resources/templates/error.html
4xx는 400대 Http status코드를 모두 받습니다.
BasicErrorController는 다음 정보를 model에 담아 뷰에 전달합니다.
/hello
)그러나 이러한 정보는 일반적으로 고객에게 노출하지 않는 편이 좋습니다. 따라서 위 정보를 model객체에 포함 할지 선택할 수 있는데, default로 모두 담지 않는 것으로 설정되어있습니다.
application.properties
never: 사용하지 않음
always: 항상 사용
on_param: 파라미터가 있을경우 사용