Filter & Intercepter & Aop

HMS·2023년 4월 18일
0

인터셉터(Interceptor), 필터(Filter) 및 AOP(Aspect-Oriented Programming)는 모두 웹 애플리케이션에서 요청/응답 처리의 공통된 관심사(cross-cutting concerns)를 처리하는데 사용되는 기술입니다. 각 기술은 공통적인 목적을 가지지만, 처리하는 영역과 적용 방법에 차이가 있습니다.

필터(Filter):

  • 필터는 서블릿 컨테이너에서 사용되며, HTTP 요청과 응답을 처리하기 전후에 특정 작업을 수행합니다.

  • 필터는 주로 인코딩, 압축, 보안 및 로깅과 같은 작업에 사용됩니다.

  • 필터는 서블릿 생명주기와 무관하게 동작합니다.

  • 필터는 Java Servlet API를 기반으로 동작하며, web.xml 또는 Java 기반 설정으로 등록할 수 있습니다.

인터셉터(Interceptor):

  • 인터셉터는 주로 Spring Framework에서 사용되며, Spring MVC에서 컨트롤러 메서드 실행 전후에 특정 작업을 수행할 수 있습니다.

  • 인터셉터는 인증, 권한 검사, 로깅, 성능 측정 등의 작업에 사용됩니다.

  • 인터셉터는 Spring 컨텍스트에 의존하며, Spring 빈으로 등록되어 사용됩니다.

  • 인터셉터는 HandlerInterceptor 인터페이스를 구현하거나, HandlerInterceptorAdapter를 상속하여 구현할 수 있습니다.

AOP(Aspect-Oriented Programming):

  • AOP는 관심사를 분리하여 모듈화하는 프로그래밍 패러다임으로, 비즈니스 로직 외에 공통 관심사를 처리할 수 있습니다.

  • AOP는 로깅, 트랜잭션 관리, 보안, 캐싱 등의 작업에 사용됩니다.

  • AOP는 메서드 호출 전후, 예외 발생 시 등 다양한 시점(join points)에서 사용할 수 있습니다.

  • AOP는 AspectJ와 같은 언어나 Spring AOP를 통해 구현할 수 있습니다.

요약하면, 필터는 서블릿 컨테이너 수준에서 동작하고 인터셉터는 Spring MVC 수준에서 동작하며, AOP는 애플리케이션 전체에 걸쳐 공통 관심사를 모듈화하여 처리할 수 있는 프로그래밍 패러다임입니다. 세 가지 기술 모두 공통 작업을 처리하는데 사용되지만, 적용 범위와 사용 방법에 차이가 있습니다.

필터와 인터셉터는 주로 요청 및 응답 처리에 초점을 맞추고 있으며, 처리 레벨의 차이가 있습니다. 필터는 서블릿 컨테이너 수준에서 동작하므로, 애플리케이션 전체에 걸쳐 적용할 수 있습니다. 인터셉터는 Spring MVC 수준에서 동작하므로, 스프링 컨트롤러에 대한 요청 처리에 집중할 수 있습니다.

AOP는 메서드 호출 전후나 예외 처리 등 다양한 시점에서 공통 관심사를 처리할 수 있습니다. 이는 애플리케이션 전체에 걸쳐 비즈니스 로직 외의 작업을 분리하고 모듈화하는 데 도움이 됩니다.

어떤 기술을 선택할지는 프로젝트의 구조, 프레임워크 및 개발팀의 선호도에 따라 달라집니다. 예를 들어, 스프링 기반의 웹 애플리케이션에서는 인터셉터나 AOP를 사용하여 공통 작업을 처리할 수 있습니다. 반면에 서블릿 컨테이너에서 독립적으로 작동하는 웹 애플리케이션의 경우 필터를 사용하는 것이 더 적합할 수 있습니다.


참고)

profile
안녕하세요

0개의 댓글