개발지식

[SPRING] 스프링 프레임워크의 처리 흐름

우루쾅 2024. 2. 7. 01:40
728x90
반응형
SMALL

예전 기술면접을 볼 때 스프링 프레임워크의 처리 흐름에 대해 질문을 받았었는데

필터나 인터셉터 등의 처리과정들을 제대로 답변하지 못했던 기억이 있어서 한번 정리해봅니다!

 

 

 필터(Filter 서블릿 필터라고도 함)

디스패처 서블릿에 요청이 전달되기 전/후의 모든 요청에 대해 인코딩, 보안, 로깅 등의 부가작업을 처리되고, 스프링 범위 밖에서 처리가 되며 web.xml에서 설정을 합니다.

 

역할 : 인코딩, 보안, 로깅 등의 부가작업

 

디스패처 서블릿(Dispacher Servlet)

모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다.

 

역할 : 요청에 대한 적합한 컨트롤러 선택

 

인터셉터(Interceptor)

디스패처 서블릿이 컨트롤러를 호출하기 전과 후의 요청과 응답을 참조하거나 가할 수 있는 기능을 제공하며, 스프링 컨택스트에서 동작합니다.

 

역할 : 권한 체크, 로깅, 트랜잭션 처리 등등

 

● 스프링 컨테이너(IOC 컨테이너 / DI 컨테이너)

SpringBean을 다루기 쉽도록 기능들이 추가된 공간

ApplicationContext를 스프링 컨테이너라고 하는데,

파라미터로 넘어온 설정 클래스 정보를 사용하여 Bean을 스프링 빈 저장소에 등록합니다.

@Configuration(객체 빈을 등록하고 관리하는 셋팅 어노테이션)

 

 

먼저 각각 처리 과정에 대해서 간단하게 요약을 해보겠습니다

 

스프링 프레임워크 전달 구조

① 클라이언트 요청은 제일 먼저 서버에 도착하면서 필터(Filter)를 거치게 됩니다.

필터는 주로 인코딩, 보안, 로깅 등의 기능을 수행하며, 필터 체인을 통해 여러 개의 필터를 거칠 수 있습니다.

 

② 필터를 거친 요청은 DispatcherServlet에 도달하게 됩니다.

DispatcherServlet 은 프론트 컨트롤러 역할을 하는데,

클라이언트의 요청을 HandlerMapping 을 통해 요청을 처리할 적절한 컨트롤러를 찾습니다.

 

③ 컨트롤러를 찾게되면, 그 전에 인터셉터(Intercoptor) 가 동작하게 됩니다.

인터셉터는 컨트롤러의 실행 전 후에 동작하며, 주로 권한 체크, 로깅, 트랜잭션 처리 등의 역할을 합니다.

 

④ 인터셉터(Interceptor)를 거친 요청은 결국 해당 컨트롤러로 전달되어 요청을 처리하게 됩니다.

 

⑤ 컨트롤러는 요청을 처리한 후, 결과를 객체에 담아 디스패처 서블릿(DispatcherServlet)에 반환합니다.

 

⑥ 디스패처 서블릿은 객체를 통해 적절한 뷰를 찾아 렌더링 합니다.

 

⑦ 최종적으로 클라이언트에게 응답이 전달됩니다.

 

이렇게 스프링 프레임워크에서는 클라이언트 요청이 필터, DispatcherServlet, 인터셉터, 컨트롤러를 거쳐 처리되고 응답이 전달되는 구조를 가지고 있습니다!

 

 

 

 

 

출처

GPT-4

망나니개발자 - https://mangkyu.tistory.com/18

728x90
반응형
LIST