본문 바로가기
[ Developer ]/Spring Framework

[Spring] 스프링 인터셉터 Interceptor

by 김현섭. 2016. 6. 10.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Interceptor
  • 서블릿의 필터와 비슷한 개념
  • 실무에서는 필터와 같이 사용한다
  • 구성의 차이점
    • 필터
      • Spring bean을 받아오지 못함
      • 서블릿에게 요청 전, 후 모두 거를 수 있음
      • doFilter 위는 요청 전이며 아래는 요청 후를 필터를 나타낸다
    • 인터셉터
      • Spring bean을 받아올 수 있음
      • Controller를 실행전, 실행 직후 (뷰 실행 전), 브라우저에게 응답되기 직전 (뷰 실행 이후)
      • 3가지 상황에서 데이터를 관리할 수 있음
      • preHandle(실행 전), postHandle(실행 직후), afterCompletion(응답 직전)
      • 사용되는 방식
        • 요청 경로마다 접근 제어를 다르게 할 때
        • 사용자가 특정 URL을 요청할 때 마다 접근내역 기록하고 싶을 때
        • 로그인 체크를 해야할 때
      • 특정 URL만 지정할 수 있다 (필터는 불가능해서 whiteList로 따로 지정)

# 요청 처리 프로세스
  • 브라우저의 요청 시 필터가 받은 후 스프링의 Dispatcher Servlet이 받는다
  • 서블릿은 Controller 찾기 직전 인터셉터가 요청을 받아 처리 후 Controller에게 요청
  • 응답 순은 역순으로 진행

# 인터셉터 생성

패키지 내에서 interceptor라는 패키지를 새로 생성해본다


그리고 클래스를 생성 후 HandlerInterceptorAdapter를 상속 한다


그리고 나서 Ctrl + Space로 preHandle, postHandle, afterCompletion을 생성한다


그리고 나서 preHandle을 return true로 준다
return이 false라면 Controller를 호출하지 않게 되므로 return true라고 준다


그리고 각각의 Handler에게 출력을해서 테스트를 진행해본다


그리고 난 후 applicationContext.xml에 추가를 해줘야 한다


위와 같이 추가를 해주면 된다
모든 URL에 interceptor인 TextInterceptor를 거쳐가게끔 만드는 것이다
그리고 나서 실행을 하면 다음과 같이 확인할 수 있다