Spring/스프링 인터셉터

스프링 인터셉터 ①

2022. 2. 28. 11:51

스프링 인터셉터:

서블릿 필터와 같이 웹과 관련된 공통사항을 처리하는 방법

(Spring MVC가 제공하는 기능이고 서블릿 필터보다 훨씬 더 많은 기능들을 제공한다)

 

 

스프링 인터셉터 기본 흐름

HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러

 

 

로그인 사용자일 경우

HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 

비 로그인 사용자

HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터(적절하지 않은 요청이라 판단, 컨트롤러 호출 X)

 

 

 

스프링 인터셉터는 아래와 같이 3개로 구성이 된다.

public interface HandlerInterceptor {
	
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {} 
    
    default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}

    default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {}

}

 

 

정상적인 동작을 하는 경우 Dispatcher Servlet 이 preHandler 를 호출한 이후 핸들러 어댑터를 통해 핸들러(컨트롤러) 를 호출하고 그 이후 postHandler를 호출한다. 이후에 render(model)를 호출하고 afterCompletion을 호출하게 된다.

만약 핸들러(컨트롤러)에서 예외가 발생하게 된다면 postHandler를 호출하지 않는다. 하지만 예외가 터지더라도 예외와 무관하게 공통 처리를 하기 위해서 afterCompletion은 호출이 된다.

 

서블릿 필터와 스프링 인터셉터는 매우 비슷한 기능을 가지고 있지만 특별히 서블릿 필터를 사용해야 할 이유가 없다면 스프링 인터셉터를 사용하는 것이 더 편리하다.

 

저작자표시 비영리 변경금지 (새창열림)
수달하나
수달하나
열심히 잘 사는게 목표
수달하나
Develop Lab
수달하나

링크

GITHUB
INSTAGRAM
  • 전체 글 (121)
    • 프로젝트 (10)
    • JAVA (2)
      • 비동기 처리 (4)
      • Stream (1)
      • 리플렉션 (0)
      • 파일 시스템 (1)
      • Optional (2)
      • JUnit (1)
      • Hash, HashCode (1)
      • 자료구조 (7)
    • Spring (17)
      • Filter (1)
      • 스프링 인터셉터 (1)
      • Dispatcher servlet (1)
      • MVC 패턴 (2)
      • Java bean (3)
      • DI (2)
    • JPA (8)
      • Fetch join (2)
      • JPQL (2)
      • 영속성 컨텍스트 (3)
    • 데이터베이스 (5)
      • Redis (1)
      • Querydsl (2)
      • Sql (1)
      • Encoding (1)
    • 개발 공부 (17)
      • 함수형 프로그래밍 (1)
      • MSA (1)
      • 블록 체인 (3)
      • 오픈소스 와 플랫폼 (2)
      • 상속 : 서브클래싱, 서브타이핑 (1)
      • SOLID 원칙 (2)
      • 트랜잭션 (0)
    • 트러블 슈팅 (7)
    • IT 서적 (27)
      • 이펙티브 자바 (1)
      • 객체 지향의 사실과 오해 (4)
      • 오브젝트 (7)
      • 모던 자바 인 액션 (10)
      • 멋진 신세계 (1)
      • 블록체인 무엇인가 (1)
      • 이기적 유전자 (1)
      • 한국의 IT 산업의 멸망 (1)
      • 가상 면접 사례로배우는 대규모 시스템 설계 기초 (0)
    • 소소한 이야기 (10)

인기 글

블로그 메뉴

  • 블로그 관리자
  • 글쓰기
hELLO · Designed By 정상우.
수달하나
스프링 인터셉터 ①
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.