헤르메스 LIFE

[Spring] Filter & HandlerInterceptor와 AOP의 차이점 본문

Spring Framework

[Spring] Filter & HandlerInterceptor와 AOP의 차이점

헤르메스의날개 2021. 1. 9. 10:46
728x90

출처 : velog.io/@damiano1027/Spring-Spring-MVC-Request-Lifecycle

Filter는 DispatcherServlet으로 가기 전에 필터링 로직을 수행하고 HandlerInterceptor(이하 Interceptor)는 Controller로 가기 전에 로직을 끼워넣는다고 하였다.

이 점에서 알 수 있는 점은, Filter와 Interceptor는 실행 흐름에 간섭하는 역할을 한다는 것이다.

그런데 실행 흐름에 간섭하여 로직을 넣는다는 점은 AOP(Aspect-Oriented-Programming)에도 해당되는 말이다.
그렇다면 AOP는 Filter와 Interceptor랑은 어떤 점이 다른 것일까?
셋은 실행 시점이 다르다.

https://velog.io/@damiano1027/Spring-Spring-MVC-Request-Lifecycle

Filter

  • DispatcherServlet에 들어가기 전인 Web Application단에서 실행된다.
  • Web Application 단의 기능만 사용할 수 있다.

Interceptor

  • Spring Application단에서 실행된다.
  • AOP가 적용되기 이전 시점에서 실행된다.
  • Spring Framework의 요소들에 접근이 가능하고 기능들을 사용할 수 있다.

AOP

  • Spring Application단에서 실행된다. Interceptor가 적용된 이후 시점에서 실행된다.
  • Spring Framework의 요소들에 접근이 가능하고 기능들을 사용할 수 있다.

ViewResolver에 대해

ViewResolver는 스프링 프로젝트에서 View도 개발하거나 건드리기 위해 사용하는 것이다. 스프링 MVC 프로젝트에서는 주로 jsp를 많이 사용하는데, Controller에서 model 객체에 값을 담고 jsp에서는 해당 값을 참조하는 방식으로 작동된다.

하지만 View는 전혀 건드리지 않고 오로지 데이터만 리턴하는 형태, 즉 API를 만들고 싶다면 ViewResolver가 필요 없다.

즉, 다음과 같다.

  • 백엔드에서 View까지 다루려면 ViewResolver 사용
  • 백엔드와 프론트엔드로 역할이 완전히 분리되면(협업) ViewResolver 사용할 필요 없이 순수 API만 개발
728x90