본문 바로가기
[개발] 프레임워크/Spring

[Spring FW] Filter

by Devsong26 2023. 12. 10.

Spring Framework에서 필터는 주로 웹 애플리케이션의 요청과 응답을 가공하는 데 사용됩니다. 이것은 서블릿 필터(Servlet Filter)를 기반으로 하며, 일반적으로 보안, 로깅, 요청 및 응답의 변형과 같은 횡단 관심사(Cross-cutting Concerns)를 처리하는데 사용됩니다.

 


필터의 주요 특징과 사용 사례

  • 요청 전처리
    • 필터는 클라이언트로부터 온 요청을 서블릿이 처리하기 전에 가공할 수 있습니다. 예를 들어, 요청에 대한 로깅, 인증 및 권한 검사 등을 수행할 수 있습니다.
  • 응답 후처리
    • 서블릿에 의해 처리된 후의 응답을 클라이언트에게 전달하기 전에 수정하거나 추가 정보를 넣는 등의 작업을 할 수 있습니다.
  • 체인 구성
    • 필터는 체인으로 구성될 수 있으며, 여러 필터가 순서대로 요청과 응답을 처리할 수 있습니다.
  • 재사용 가능
    • 필터는 여러 웹 애플리케이션에서 재사용할 수 있어, 코드의 중복을 줄이고 관리를 용이하게 합니다.

 

 

필터 구현 방법

  • 필터 클래스 구현
    • `javax.servlet.Filter` 인터페이스를 구현하는 클래스를 만듭니다. 이 클래스에서는 `doFilter` 메소드를 오버라이딩하여 요청과 응답을 처리합니다.
  • Spring Bean 등록
    • 필터를 Spring Bean으로 등록합니다. 이를 통해 Spring의 기능, 예를 들어 의존성 주입(Dependency Injection)을 활용할 수 있습니다.
  • URL 패턴 매핑
    • 필터를 적용할 URL 패턴을 지정합니다. 이는 `web.xml`에서 설정하거나, Spring Boot를 사용하는 경우 `FilterRegistrationBean`을 통해 프로그래매틱하게 설정할 수 있습니다.

 

 

Spring Framework에서 필터를 사용하면 애플리케이션의 유연성과 재사용성을 높일 수 있으며, 다양한 요구 사항을 효과적으로 처리할 수 있습니다.

 

 

 

동작 원리

 

Spring Framework의 필터(Filter) 동작 원리를 이해하기 위해서는 먼저 서블릿 필터의 기본 개념과 웹 애플리케이션에서의 요청 처리 과정을 알아야 합니다. 필터는 서블릿 컨테이너에 의해 관리되며, HTTP 요청과 응답을 서블릿이 처리하기 전후에 가로채는 역할을 합니다.

 


필터의 동작 과정

  • 요청 수신
    • 클라이언트로부터 HTTP 요청이 서버에 도착하면, 서블릿 컨테이너는 이 요청을 가장 먼저 필터 체인에 전달합니다.
  • 필터 체인 처리
    • 필터 체인은 하나 이상의 필터로 구성될 수 있습니다. 각 필터는 체인의 다음 필터로 요청을 전달하기 전에 특정 작업(예: 인증 확인, 로깅, 요청 데이터 변환 등)을 수행할 수 있습니다.
  • doFilter 메소드
    • 각 필터는 `doFilter` 메소드를 구현합니다. 이 메소드는 세 가지 파라미터를 받습니다: `ServletRequest`, `ServletResponse`, 그리고 필터 체인 객체. 필터가 요청을 처리한 후에는, 필터 체인의 `doFilter` 메소드를 호출하여 요청을 체인의 다음 요소(또 다른 필터 또는 최종 목적지인 서블릿)로 전달합니다.
  • 서블릿 처리
    • 마지막 필터가 요청을 처리하고 체인을 통과시킨 후, 요청은 최종적으로 서블릿에 도달합니다. 서블릿은 비즈니스 로직을 처리하고 응답을 생성합니다.
  • 응답의 역방향 전달
    • 응답은 서블릿에서 생성되고 다시 필터 체인을 거쳐 클라이언트로 전송됩니다. 이때 필터는 응답에 대해 후처리 작업(예: 응답 데이터 암호화, 헤더 추가 등)을 수행할 수 있습니다.
  • 응답 완료
    • 모든 필터가 응답을 처리하면, 응답은 클라이언트에게 전송됩니다.

 


필터 구성

 

필터는 일반적으로 다음과 같이 구성됩니다:

  • 필터 클래스
    • `javax.servlet.Filter` 인터페이스를 구현하는 클래스. 이 클래스에서 `doFilter` 메소드를 오버라이드하여 요청과 응답을 처리합니다.
  • 설정
    • 필터는 `web.xml` 파일 또는 Spring Boot의 경우 Java 구성 클래스를 통해 설정될 수 있습니다. 이 설정에는 필터 이름, 필터 클래스, URL 패턴 매핑 등이 포함됩니다.

 


이렇게 필터를 사용함으로써, Spring Framework 기반의 웹 애플리케이션은 요청과 응답을 효과적으로 관리하고, 보안, 로깅, 요청/응답 변형 등의 횡단 관심사를 처리할 수 있습니다.

'[개발] 프레임워크 > Spring' 카테고리의 다른 글

Swagger  (0) 2023.12.26
[MyBatis] TypeHandler  (0) 2023.12.12
[Spring FW] Interceptor  (0) 2023.12.09
Spring에서 ApplicationEvent 처리하기  (0) 2023.11.29
스프링 트랜잭션  (0) 2023.11.26