AOP(Aspect-Oriented Programming), Interceptor, Filter는 모두 애플리케이션에서 코드를 효율적으로 관리하고 제어하기 위한 다양한 방법입니다. 각각의 특징과 차이점은 다음과 같습니다.
AOP는 여러 모듈에서 공통으로 사용되는 기능을 분리하여 모듈 간의 의존성을 줄이는 프로그래밍 패러다임입니다.
주요 장점은 코드 중복을 줄이고 핵심 비즈니스 로직과 횡단 관심사를 분리하여 코드를 더 모듈화하고 관리할 수 있게 해줍니다.
대표적인 AOP 구현체로는 Spring AOP, AspectJ 등이 있습니다.
Interceptor는 주로 웹 애플리케이션에서 요청/응답의 전후에 공통 로직을 삽입하는 데 사용됩니다.
대표적으로 스프링 프레임워크에서 HandlerInterceptor 인터페이스를 구현하여 인터셉터를 사용할 수 있습니다.
주요 장점은 요청 전후의 로직을 처리할 수 있어 보안, 로깅, 트랜잭션 처리 등에 유용합니다.
Filter는 Servlet에서 웹 애플리케이션으로 들어오는 요청과 응답을 수정하거나 재구성하는 데 사용됩니다.
주로 웹 애플리케이션의 보안, 로깅, 인코딩 등을 처리하는 데 사용됩니다. Filter는 DispatcherServlet 이전에 실행되며, 서블릿의 생명주기와는 별개로 동작합니다.
Filter
Interceptor
Controller (핸들러)
AOP
AOP: 코드 중복을 줄이고 모듈 간의 의존성을 낮추어 유지보수성과 가독성을 향상시킵니다.
Interceptor: 요청 전후에 공통 로직을 삽입하여 중복 코드를 줄이고 웹 애플리케이션의 보안 및 로깅을 강화할 수 있습니다.
Filter: 서블릿 이전에 실행되어 요청과 응답을 수정하거나 재구성하여 웹 애플리케이션의 보안 및 인코딩을 처리할 수 있습니다.