21강 스프링 예외처리
- 목차
- 내용
- 스프링 예외처리
- 학습 목표
- 스프링에서의 예외처리 방식을 이해하고 구현
- @ControllerAdvice 사용한 예외처리 작성
- 내용
- Spring 예외처리 개요
- 서버에서 발생된 예외를 최종 사용자에게 전달되는 것을 방지
- DAO 와 Service 에서 발생되 예외는 Controller 로 모여짐
- System 예외는 Business 예외로 다시 던지는(re-throwing) 방식 사용
- @ExceptionHandler 와 @ControllerAdvice 를 사용하여 예외를 처리
- 스프링에서는 Controller 딴에서 예외를 처리하는 것을 권고하고 있음.
- 서버에서 발생된 예외를 최종 사용자에게 전달되는 것을 방지
- Spring 예외처리 특징
- 컨트롤러 기반
- Controller - Service - DAO 에서 결국 Controller 로 돌아오기 때문에 Controller 에서 예외처리함
- 부가 기능을 제공하는 Advice 클래스를 작성함
- XML 설정 파일에 <aop:config>를 이용해서 애스펙트를 설정함.
(즉, 어드바이스와 포인트컷을 설정함)
- 글로벌 Exception 핸들러
- 예외처리는 cross-cutting concern, 어플리케이션 전체에 포인트컷이 적용되어야 함
- @ControllerAdvice 어노테이션을 포함한 클래스는 전역 예외처리 컨트롤러가 됨
------>>>>>>>>> @ControllerAdvice 가 예외처리 화면으로 보내기 전 캐치하는 컨트롤러!!! - 컨트롤러에서 캐치한 예외는 JSP같은 View나 혹은 JSON 으로 응답이 가능
- 컨트롤러 기반
- MyBatis에서의 예외처리
- JDBC 관련 코드는 대부분 SQLException 발생
- 대부분의 SQLException 은 복구가 불가능
- Spring-MyBatis 는 SQLException 을
DataAccessException(RuntimeException)으로 re-throwing 함 - DataAccessException으로 부터 SQLException을 추출하여 getErrorCode()메소드로 에러코드 확인 가능
- JDBC 관련 코드는 대부분 SQLException 발생
- @ControllerAdvice
- 특징
- 스프링3.2 이상에서 사용 가능
- @Contorller 나 @RestController 에서 발생하는 예외를 Catch 함
- 스프링 4.0 이상에서는 특정한 컨트롤러만 지정해서 catch 가 가능함
- 설정
- servlet-context.xml 에서 ControllerAdvice를 include
- 특징
- RestController 에서의 예외처리 (스프링 4.0 이후부터 지원)
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - 인터셉터/로그인 처리 (0) | 2020.05.31 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - 트랜잭션과 로깅 (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - AOP (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - MyBatis (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - Context 분리와 전략 (0) | 2020.05.31 |