코딩항해기

[Spring] Filter, Interceptor, AOP 본문

Spring

[Spring] Filter, Interceptor, AOP

miniBcake 2024. 10. 15. 16:05

 

 

 

[JSP] Servlet - 필터 Filter

[JSP] Servlet - 리스너 Listener리스너 Listener컨테이너에서 발생하는 이벤트를 모니터링하다가 특정 이벤트가 발생하면 실행되는 특수한 서블릿으로, '이벤트 리스너(Event Listener)'라고도 한다. 웹 애

minibcake.tistory.com

 

 

[Spring] 관점 지향 프로그래밍 AOP (xml)

AOP 관점 지향 프로그래밍 Aspect Oriented ProgrammingSpring 프레임워크는 IoC와 AOP을 지원하는 경량의 프레임워크이다. 그 중 AOP는 관점 지향 프로그래밍을 의미하며, 횡단 관심사의 분리를 허용해 모듈

minibcake.tistory.com

 

AOP를 배우며 Filter에 차이점이 알고 싶어져 찾아보니 interceptor가 있다는 것을 알게되어 함께 정리한다.

 

횡단 기능 분리

AOP, 필터, 인터셉터 모두 횡단 기능(공통 로직)을 분리해 관리하기 위해 사용한다. 분리하지 않고 사용하게 되면 중복된 코드가 많아지고 유지보수가 어려워지며 수정 때마다 반복되는 컴파일로 인해 개발 비용이 증가한다.

 

이러한 공통 기능은 메서드 호출 앞, 중간, 뒤에 추가해 AOP, 필터, 인터셉터로 처리할 수 있다.

  • Filter(필터) - 핸들러 동작의 전 후 과정에 부가로직 처리, 웹 컨테이너에서 관리
  • Interceptor(인터셉터) - 이하 비슷함, 스프링 컨테이너에서 관리
  • AOP(관점 지향 프로그래밍) - 메서드 동작의 전 후 과정에 부가로직 처리

 

https://sallykim5087.tistory.com/158

 

Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면, AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.

요청이 들어오면, Filter -> Intercepter -> AOP -> Intercepter -> Filter 순으로 거치게 된다.

 

또한 Filter는 스프링의 기능이 아닌 JAVA servlet에서 제공하는 기능이다. 스프링에 들어온 요청이 DispatcherServlet에 의해 컨프롤러에 매핑 되기 전, 후에 동작한다. (filter는 filterchain을 통해 여러 필터를 거치게 할 수도 있다.)

그렇기 때문에 Fliter는 인코딩 디코딩 역할을 수행하는 경우가 많다.

 

Intercepter는 요청에 대한 작업을 DispatcherServlet과 Handler(Controller)사이에서 전/ 후로 인터셉터 할 수 있다. Filter와의 차이점은 Intercepter가 스프링 기술이기 때문에 스프링에서 관리하는 빈들을 사용할 수 있다. 다국어 처리할 때 많이 사용된다.

 

AOP는 주로 로깅, 트랜잭션, 에러처리에 사용되며, Filter와 Intercepter와 다르게 비즈니스 로직을 처리할 때 사용된다. 메소드 전 후로 자유롭게 설정할 수 있다. Intercepter, Filter는 주소로 대상을 구분해서 걸러내야하는 반면, AOP는 주소, 파라미터, 어노테이션 등 다양한 방법으로 대상을 지정할 수 있다.

 

 

참고자료