스프링 없이 개발했을때 우리는 컨트롤러에서 예외가 발생했을때 매번 try catch문으로 예외처리를 해주었다. 그렇지만 스프링에서는 이 불편함을 스프링을 이용하여 한꺼번에 처리할 수 있다.
스프링에서는 @ExceptionHandler 와 @ControllerAdvice 를 이용해서 처리하게 된다.
| @ControllerAdvice
말 그대로 컨트롤러에서 예외가 발생했을때 충고해 주는 곳이다. 해당 객체가 스프링의 컨트롤러에서 발생시키는 예외 처리하는 존재임을 명시해준다. (= 예외처리 여기로 다 모여~)
예외 사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 한다. 따라서 공통적인 에외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리한다 따로 예외들만 분리해서 관리할 수 있게되고 이것이 AOP를 이용하는 방식이다.
| @Exceptionhandler()
특정 예외가 발생했을때 이곳으로 와 라고 말해주는 존재.
1)Exceptionhandler(Exception.class)
: Exception에서 예외 발생하면 여기로 와라 (최상위 객체라 모든 예외는 이곳으로 온다)
2)Exceptionhandler(NoHandlerFoundException.class)
: 페이지를 찾을 수 없을 경우 여기로 와라
<예제1 : 전체 예외처리 >
1.새로운 패키지 com.koreait.exception을 만들고 그 안에 CommonExceptionAdvice.java 만들기.
2.메소드로 예외를 받아와서 error_page로 이동하게 한다.
3.root-context.xml 에 관리해야할 패키지를 적어준다.
<context:component-scan base-package="com.koreait.exception"></context:component-scan>
<예제2: 페이지 찾을 수 없음 404 오류 예외처리>
1.CommonExceptionAdvice.java 에 메소드 추가하기.
2.어노테이션 @ExceptionHandler 추가 (이때는 NoHandlerFoundException 객체가 필요하다)
3.응답 상태를 not found 상태로 해주어야 한다.
4.스프링의 모든 요청은 dispatcherservlet 을 이용해서 처리되므로 404에러를 같이 처리 할 수있도록
관련 코드를 web.xml 에 적어주어야 한다.
5.404page로 이동하여 원하는 메세지 적기
'프로그래밍 > Spring' 카테고리의 다른 글
Spring IoC , Bean (0) | 2022.07.12 |
---|---|
Spring 5일차 : 스프링 웹 프로젝트 & 로그인, 회원가입 (0) | 2022.03.24 |
Spring 3일차 - 스프링 MVC (0) | 2022.03.17 |
Spring 2일차 - DI(의존성 주입) (0) | 2022.03.15 |
Spring 1일차 - 스프링 프레임워크 (0) | 2022.03.14 |