홍이의 개발 노트

Spring Boot의 기본적인 Error처리 본문

개발이야기/스프링(Spring)

Spring Boot의 기본적인 Error처리

코바 2016. 1. 26. 23:23
  • 관련 클래스: org.springframework.boot.autoconfigure.web.BasicErrorController
  • 스프링 부트에서 예외 사항이 발견되면 따로 처리 하는 부분이 존재하지 않으면 이 클래스에서 대부분의 예외를 처리한다.
    • 특수한 예외를 제외
  • 기본 기능 
    • 컨텐츠 타입이 text/html 형태 즉 브라우저에서 페이지로 요청 했을 때 에러가 발생하면 페이지로 보인다.
      • 기본 페이지
        • org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.WhitelabelErrorViewConfiguration 에서 defaultErrorView 확인
      • 해당 페이지 부분을 커스텀방법
        • Bean이름이 "error" 이름으로 View 를 리턴하는 방법 ( 예: @Bean(name=error) ... )
        • 벨로시티(velocity) 및 핸들바즈 등 템플릿 엔진을 사용하면 “error" view를 찾는다.
        • application.properties (또는 yml )
          • server.error.path 이 속성에서 직접 URI를 지정하여 직접 매핑한다.
          • 기본속성은  "/error"
          • model에 예외 속성값을 들어가 있다.
            • timestamp
            • error
            • status
            • message
            • ... 
    • 그 이외에 예외가 발생하면 @ResponseBody 형태로 리턴 한다. ( json, xml 등 ) 
  • 기본 예외처리 비활성화
    • org.springframework.boot.autoconfigure.web.ErrorController 인터페이스를 상속 받은 Bean이 존재하면 비활성화 처리 된다.
  • Error 처리 확장
    • org.springframework.boot.autoconfigure.web.ErrorController 인터페이스를 구현하면 기본 예외처리가 중지 되면서 확장 가능
      • 또는 org.springframework.boot.autoconfigure.web.AbstractErrorController, BasicErrorController 등을 상속 받아서 확장가능
    • Error 속성정보만 확장 하기 위해서는 org.springframework.boot.autoconfigure.web.DefaultErrorAttributes를 참고해서 확장하면 된다.
      • 기본적으로 ErrorAttributes 인터페이스를 확인