스프링 부트는 에러 페이지를 기본적으로 제공한다.

  • /error : 기본 오류 페이지 URI
  • BasicErrorController : 기본 오류페이지 URI(/error)를 맵핑하는 기본 컨트롤러

개발자는 오류 페이지만 등록하면 된다

  • BasicErrorController가 제공하는 룰과 우선순위에 따라 페이지를 등록

우선순위

  • 뷰 템플릿 - 정적리소스 - error뷰 이름 순서
  • 구체적인 404가 대략적인 4xx보다 우선
  1. 뷰 템플릿
    • resources/templates/error/500.html
    • resources/templates/error/5xx.html
  2. 정적 리소스
    • resources/static/error/400.html
    • resources/static/error/404.html
    • resources/static/error/4xx.html
  3. error 뷰 이름
    • resources/templates/error.html

에러정보 뷰 출력

  • BasicErrorController는 에러 정보를 바인딩해서 넘겨준다
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
</head>
<body>
<li>오류 정보</li> 
<ul>
    <li th:text="|timestamp: ${timestamp}|"></li>
    <li th:text="|path: ${path}|"></li>
    <li th:text="|status: ${status}|"></li>
    <li th:text="|message: ${message}|"></li>
    <li th:text="|error: ${error}|"></li>
    <li th:text="|exception: ${exception}|"></li>
    <li th:text="|errors: ${errors}|"></li>
    <li th:text="|trace: ${trace}|"></li>
</ul>
</body>
</html>
  • exception, errors, trace, message는 추가설정을 하지 않으면 null로 표출된다
server:
  error:
    include-message: always
    include-binding-errors: always
    include-exception: true
    include-stacktrace: on_param