본문 바로가기

찌끄레기 개발자

(이제서야 정리해 보는) Spring이 Request를 처리하는 과정

경력은 짧지만 나름 전문가라고 생각했지만, 누군가에게 설명을 하지 못하는 것에 자괴감을 느끼고

스스로 다시 한번 정리해 보고자 작성하는 '이제서야 정리해 보는' 시리즈

 


 

우리는 특정 사이트를 보기 위해 브라우저를 켜고 URL을 입력합니다

그러면 해당 서버에서 정의된 응답을 주게 되는데, Spring을 이용해 만든 어플리케이션은 우리의 요청을 어떻게 처리하는지 간단히 정리하고자 합니다

 

 

브라우저에 URL(예시: https://bingsubat.tistory.com/category/Spoon)을 입력했을 때 Spring + Tomcat 서버에서 일어나는 일들

  1. 브라우저가 Tomcat이 Binding 되어있는 443 포트로 요청 전달
    [찌끄레기 개발자] - (이제서야 정리해 보는) 브라우저에 URL을 입력하면 화면이 보여지는 과정
  2. Tomcat(Servlet Container)는 쓰레드풀에서 쓰레드를 생성
  3. 생성된 쓰레드는 해당 도메인(bingsubat.tistory.com)의 요청을 처리하는 Spring 프로젝트에서 web.xml에 정의된 Dispatcher Servlet에 요청 전달
  4. Dispatcher Servlet은 Handler Mapping 객체가 요청에 맞는 컨트롤러를 조회할 권한 위임
  5. Handler Mapping 객체는 @Controller Annotation이 붙은 컨트롤러 중 (/category/Spoon)을 처리하는 컨트롤러 객체의 정보를 반환
  6. 컨트롤러 객체의 정보를 받은 Dispatcher Servlet은 Handler Adapter에 해당 컨트롤러의 호출 권한을 위임
  7. Handler Adapter는 컨트롤러의 대상 메소드를 호출 (로직 수행)
  8. 필요에 따라 Service, DAO 등의 로직을 수행한 후 리턴하는 View의 이름과 Model 데이터를 반환
  9. View의 이름과 Model 데이터를 받은 Dispatcher Servlet은 View Resolver에 View를 반환하도록 권한을 위임
  10. View Resolver는 View의 이름에 맞는 파일을 읽어 Model 데이터를 합쳐 View 객체를 반환
  11. View 객체를 받은 Dispatcher Servlet은 데이터를 반환하여 Servlet Container를 통해 브라우저에 반환

 


 

세부적으로 적어보기엔 조금 더 공부가 필요할 것 같아 일단은 여기까지 정리하도록 하고

다음에 다시 심층적인 과정을 정리하는 것으로 하자!

 

반응형