예전 기술면접을 볼 때 스프링 프레임워크의 처리 흐름에 대해 질문을 받았었는데
필터나 인터셉터 등의 처리과정들을 제대로 답변하지 못했던 기억이 있어서 한번 정리해봅니다!
● 필터(Filter – 서블릿 필터라고도 함)
디스패처 서블릿에 요청이 전달되기 전/후의 모든 요청에 대해 인코딩, 보안, 로깅 등의 부가작업을 처리되고, 스프링 범위 밖에서 처리가 되며 web.xml에서 설정을 합니다.
역할 : 인코딩, 보안, 로깅 등의 부가작업
● 디스패처 서블릿(Dispacher Servlet)
모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다.
역할 : 요청에 대한 적합한 컨트롤러 선택
● 인터셉터(Interceptor)
디스패처 서블릿이 컨트롤러를 호출하기 전과 후의 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공하며, 스프링 컨택스트에서 동작합니다.
역할 : 권한 체크, 로깅, 트랜잭션 처리 등등
● 스프링 컨테이너(IOC 컨테이너 / DI 컨테이너)
Spring이 Bean을 다루기 쉽도록 기능들이 추가된 공간
ApplicationContext를 스프링 컨테이너라고 하는데,
파라미터로 넘어온 설정 클래스 정보를 사용하여 Bean을 스프링 빈 저장소에 등록합니다.
@Configuration(객체 빈을 등록하고 관리하는 셋팅 어노테이션)
먼저 각각 처리 과정에 대해서 간단하게 요약을 해보겠습니다
스프링 프레임워크 전달 구조
① 클라이언트 요청은 제일 먼저 서버에 도착하면서 필터(Filter)를 거치게 됩니다.
필터는 주로 인코딩, 보안, 로깅 등의 기능을 수행하며, 필터 체인을 통해 여러 개의 필터를 거칠 수 있습니다.
② 필터를 거친 요청은 DispatcherServlet에 도달하게 됩니다.
DispatcherServlet 은 프론트 컨트롤러 역할을 하는데,
클라이언트의 요청을 HandlerMapping 을 통해 요청을 처리할 적절한 컨트롤러를 찾습니다.
③ 컨트롤러를 찾게되면, 그 전에 인터셉터(Intercoptor) 가 동작하게 됩니다.
인터셉터는 컨트롤러의 실행 전 후에 동작하며, 주로 권한 체크, 로깅, 트랜잭션 처리 등의 역할을 합니다.
④ 인터셉터(Interceptor)를 거친 요청은 결국 해당 컨트롤러로 전달되어 요청을 처리하게 됩니다.
⑤ 컨트롤러는 요청을 처리한 후, 결과를 객체에 담아 디스패처 서블릿(DispatcherServlet)에 반환합니다.
⑥ 디스패처 서블릿은 객체를 통해 적절한 뷰를 찾아 렌더링 합니다.
⑦ 최종적으로 클라이언트에게 응답이 전달됩니다.
이렇게 스프링 프레임워크에서는 클라이언트 요청이 필터, DispatcherServlet, 인터셉터, 컨트롤러를 거쳐 처리되고 응답이 전달되는 구조를 가지고 있습니다!
출처
GPT-4
망나니개발자 - https://mangkyu.tistory.com/18
'개발지식' 카테고리의 다른 글
index 가 뭔지, 동작원리에 대해 설명해보세요(실제 기술면접 질문) (0) | 2024.02.13 |
---|---|
도커(Docker)란! 컨테이너(Container)란! 쿠버네티스(Kubernetes)란! 무엇인가! (0) | 2024.02.12 |
[SPRING] 스프링 컨테이너(Spring Container)란?! (0) | 2024.02.05 |
[SPRING] DI(Dependency Injection) 의존관계 주입, DI 컨테이너 (0) | 2024.02.05 |
[SPRING] IOC(Inversion of Control) 제어의 역전 (0) | 2024.02.05 |