티스토리 뷰

개발을 할 때, 공통적이고 반복적인 작업을 처리해야 할 때가 있습니다. Spring 에서는 3가지 방법을 주로 사용하는데, 차이점과 동작방식에 대해 알아보겠습니다.

요청의 흐름


클라이언트로부터 요청이 들어오게 되면 가장 먼저 Filter 가 request 에 대한 정보를 받아 데이터를 처리합니다. Filter 는 자바 서블릿에서 제공하는 기능으로 웹컨테이너(톰캣) 에 의해 관리됩니다. 주로 요청에 대한 권한, 인증을 처리하는데 사용이 됩니다.

다음으로 Filter 를 거쳐 프론트 컨트롤러인 Dispatcher Servlet 이 요청을 받는데 이는 요청 정보를 통해 위임할 컨테이너를 찾는 역할을 합니다.

디스패처 서블릿이 위임할 컨트롤러를 찾아 넘기게 되면 중간에 Interceptor 가 해당 요청을 가로채게 됩니다. 인터셉터는 Spring이 제공하는 기술로, 디스패처 서블릿이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공합니다.

인터셉터를 거쳐, AOP 에 해당 요청이 전달되는데, AOP 는 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 그 관점을 기준으로 각각 모듈화 하는것입니다. 또한 프록시 패턴 기반의 구현체 이므로, 원본 클래스 대신 프록시를 빈으로 등록하고 추후에 원본 클래스를 호출 합니다.

최종적으로 컨트롤러가 요청을 받아 데이터를 처리하고 역순으로 진행하여 사용자에게 응답을 줍니다.

※ request -> filter -> servlet -> interceptor -> aop -> controller 순

최근에 올라온 글
Total
Today
Yesterday