Skip to content

spring filter #

Find similar titles

1회 업데이트 됨.

Edit
  • 작성자
    ihcho

You are seeing an old version of the page. Go to latest version

Structured data

Category
Programming

서론. #

스프링을 기반으로 웹 프로젝트를 개발하다보면 특정 프로세스를 공통으로 처리할 필요를 느낄 때가 많다. 가장 흔한 예가 로그인 프로세스 일 것이다. 이럴 때 컨트럴로어에 들어가기 전 공통으로 처리할 수 있는 기능(전후처리기)이 있으면 중복되는 코드를 줄일 수 있다. 우리는 이러한 문제를 Interceptor나 Filter를 통해 해결할 수 있다. 다만 전후처리라는 공통의 기능을 가지고 있기 때문에 Interceptor와 Filter의 차이가 명확하지 않은 것 같다. 본 글에서는 Interceptor와 Filter의 차이점에 대해 알아보고자 한다.

본론. #

Interceptor와 Filter의 공통점 #

앞서 서론에 이야기한 바와 같이 Interceptor와 Filter는 공통된 업무를 프로그램 앞 또는 뒤에 추가하여 자동으로 처리할 수 있는 기능이 있다. 어떠한 행동(로직)을 수행하기 이전 또는 이후에 수행함으로써 프로젝트의 서버 부하를 줄이고 소스관리를 용이하게 한다.

Interceptor와 Filter의 차이점 #

Filter는 Web Application에 등록을 하고 Interceptor는 Spring의 Context에 등록을 한다. 이에 따라 Filter와 Interceptor는 실행되는 시점이 다르다. 요청의 흐름에 따라 Filter가 먼저 Interceptor가 나중에 실행된다. 뒤에서 자세히 알아보자.

Interceptor 설정

Filter 설정 필터이름 com.insilicogen.common.filter.필터클래스 필터이름 /*.do

아마 위 두 설정을 보면 직관적으로 어떤 설정이 담겨 있는지 알 수 있을 것이다. 두 설정 모두 특정 URL이 호출될 경우 인터셉터클래스나 필터클래스를 먼저 호출하겠다는 설정이다.

요청흐름에 따른 Interceptor와 Filter #

image

그림1 Interceptor와 Filter의 요청흐름 (출처: 김형진 - blogspot)

위 그림1을 보면 필터가

0.0.1_20240318_1_v95