본문 바로가기

TIL

231213_TIL

오늘한일

  • Filter 공부

 

Spring 프레임워크에서의 "Filter"는 주로 웹 애플리케이션에서 HTTP 요청 및 응답을 처리하고 수정하는 데 사용됩니다. 이러한 Filter는 Servlet API의 일부이며, Spring은 이를 활용하여 다양한 작업을 수행할 수 있도록 지원합니다. 여기에서 Spring에서 Filter가 나온 이유에 대해 설명하겠습니다:

  1. HTTP Request 및 Response 처리:
    • Filter는 일반적으로 HTTP 요청이 서블릿에 도달하기 전이나 후에 실행됩니다. 이를 통해 개발자는 요청 및 응답을 조작하고 수정할 수 있습니다.
    • 예를 들어, 요청 데이터의 변조, 헤더의 추가 또는 제거, 응답의 압축 등과 같은 작업을 Filter에서 처리할 수 있습니다.
  2. Cross-cutting Concerns 처리:
    • Filter는 관심사의 분리 (Separation of Concerns)를 실현하는 데 도움이 됩니다. 예를 들어, 보안, 로깅, 인증 등과 같은 여러 관심 영역들을 Filter에서 처리할 수 있습니다.
  3. 재사용성과 모듈화:
    • Filter는 재사용 가능한 모듈로써 설계됩니다. 특정한 기능을 담당하는 Filter를 만들어 두면 여러 서블릿에서 이를 공통적으로 사용할 수 있습니다.
  4. Spring의 AOP와 통합:
    • Spring은 관점 지향 프로그래밍 (AOP)을 지원하는데, Filter는 이와 유사한 역할을 하면서도 Spring AOP와 쉽게 통합될 수 있습니다. 이를 통해 코드의 재사용성과 유지보수성이 향상됩니다.
  5. 서블릿 컨테이너의 표준 기능 활용:
    • Spring은 서블릿 컨테이너의 표준 기능을 활용하여 웹 애플리케이션을 개발합니다. Filter는 서블릿 스펙의 일부이므로 Spring은 이를 통해 서블릿 컨테이너의 특정 동작을 재사용할 수 있습니다.
  6. 전체적인 웹 애플리케이션 아키텍처 구성:
    • Filter는 전체적인 웹 애플리케이션 아키텍처를 구성하는 중요한 요소 중 하나로써, 요청의 전처리나 응답의 후처리와 같은 작업들을 통해 애플리케이션의 동작을 조정하고 향상시킬 수 있습니다.

요약하면, Spring에서의 Filter는 HTTP 요청과 응답을 처리하는 중요한 구성 요소로서, 모듈화, 재사용성, 관심사 분리 등의 이점을 제공하여 개발자가 웹 애플리케이션을 보다 효과적으로 개발하고 유지보수할 수 있도록 도와줍니다.

 

 

 

 

 

 

정리

  1. Filter를 사용하려면 Filter Interface를 Implements 하여 구현해야 한다.
  2. HTTP 요청이 오면 doFilter() 메서드가 호출된다.
    1. ServletRequest는 기능이 별로 없으니 HttpServletRequest로 다운캐스팅 해야한다.
  3. chain.doFilter(request, response)
    1. (순서를 설정해둔)다음 필터가 있으면 Filter를 호출한다.
    2. 다음 실행할 필터가 없으면 Servlet을 호출한다.
    3. 해당 메서드를 호출하지 않으면 다음 단계로 진행되지 않는다.
    4. → 다음 필터나 Servlet을 호출하지 않는다.
  • Filter를 등록하는 방법은 여러가지가 있다. SpringBoot의 경우 FilterRegistrationBean 사용
    • setFilter()
      • 등록할 필터를 파라미터로 전달하면 된다.
    • setOrder()
      • Filter는 Chain 형태로 동작한다.
      • 즉, 실행될 Filter들의 순서가 필요하다.
      • 파라미터로 전달될 숫자에 따라 우선순위가 정해진다.
      • 숫자가 낮을수록 우선순위가 높다.
      • 필터를 적용할 URL 패턴을 지정한다.
      • 여러개 URL 패턴을 한번에 지정할 수 있다.
      • 규칙은 Servlet url-pattern과 같다.addUrlPatterns()
  • @WebFilter 어노테이션은 필터 등록이 가능하지만 순서 조절이 안되니 사용하지 않는다.

'TIL' 카테고리의 다른 글

231221_TIL  (0) 2023.12.22
231220_TIL  (0) 2023.12.20
231212_TIL  (0) 2023.12.13
231211_TIL  (0) 2023.12.13
231208_TIL  (0) 2023.12.11