개발이야기/스프링(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 등 )
- 컨텐츠 타입이 text/html 형태 즉 브라우저에서 페이지로 요청 했을 때 에러가 발생하면 페이지로 보인다.
- 기본 예외처리 비활성화
- 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 인터페이스를 확인
- org.springframework.boot.autoconfigure.web.ErrorController 인터페이스를 구현하면 기본 예외처리가 중지 되면서 확장 가능