study/Spring boot

Spring Boot - 스프링 부트 동작 원리

올스왑 2021. 2. 18. 13:35

데어프로그래밍 님의 스프링 부트 강의를 듣고 정리하는 글입니다.(www.youtube.com/channel/UCVrhnbfe78ODeQglXtT1Elw)

 

스프링에 배우면서 본문을 채워갈 예정.

 

1. 내장 톰캣을 가진다

  • 톰캣은 WAS다.
  • 톰캣을 http 통신을 한다. http는 Stateless 방식이다.(연결 유지X) http 통신은 요청과 응답으로 이뤄진다.
  • 아파치는 일반 자원만 응답할 수 있지만, 톰캣은 jsp파일을 컴파일하여 응답할 수 있다.

2. 서블릿 컨테이너

  • 서블릿을 모른다면 먼저 읽고 오기 - jang-sn.tistory.com/49
  • 스프링은 URI로만 접근할 수 있다. -> 요청시에는 무조건 WAS(자바)를 거쳐야 한다.
  • 서블릿은 간단히 말해, 클라이언트 요청을 처리하는 프로그램이다.
  • 서블릿 컨테이너는 서블릿은 모아놓은 것인데 이것이 톰캣이다.
  • 톰캣은 최초의 요청이 들어오면 스레드를 만들고 이 스레드가 서블릿 객체를 만든다.
  • 새로운 요청이 들어오면 동시 처리를 위해 새로운 스레드를 만들고 새로운 서블릿 객체를 만든다. 또 다시 요청이 들어오면 같은 과정을 반복한다.
  • 만들어질 수 있는 스레드의 수는 정해져 있다. 모든 스레드가 작업중일 때 새로운 요청이 들어왔다면, 그 요청은 대기한다. 그리고 작업을 마친 스레드 또는 응답을 마친 스레드가 생기면 대기하고 있던 요청을 그 스레드가 처리한다.  -> 스레드를 재사용한다. 그래서 속도가 빠르다.
  • 정리: 스프링은 URI 요청을 받기 때문에, 서블릿 컨테이너가 동작할 수 밖에 없다. 그러면 그 요청이 최초 요청이라면 메모리를 로딩해 서블릿 객체를 만들고 사용하고, 계속 요청이 들어오는 대로 스레드를 생성해 서블릿을 만들다가 제한된 수를 넘어가면 원래 있던 스레드를 재사용한다.
  • 마지막으로 최종적으로 만들어지는 것이 HtptServletRequest 객체와 HttpServletResponse 객체이다. 이건 스프링이 아니라 톰캣이 갖고 있는 객체다.

3. web.xml

  • ServletContext의 초기 파라미터를 생성한다.
  • ServletContext의 초기 파라미터를 생성한다.
  • Servlet/JSP에 대한 정의 및 매핑을 한다.
  • Mime Type을 매핑한다.
  • Welcom File List를 설정한다.
  • Error pages를 처리한다
  • 리스터 / 필터를 설정한다.
  • 보안을 설정한다.

4. FrontController 패턴

 

5. RequestDispatcher

 

6. DispatcherServlet

 

7. 스프링 컨테이너

 

8. 요청 주소에 따른 적절한 컨트롤러 요청(Handler Mapping)

 

9. 응답