내장 톰캣을 가지는 스프링부트는 jar파일로 배포하여 톰캣으로 실행할 수 있다.
서버가 실행되면 web.xml(웹 배포 서술자)을 로딩(메모리에 적재)한다.
web.xml은 ServletContainer에 Root-ApplicationContext를 로딩하는 클래스 ContextLoaderListener를 생성한다.
ContextLoaderListener는 모든 서블릿이 공통으로 가져야할 설정 즉, Application Context 단위의 설정인 Root-ApplicaionContext를 로딩한다.
RootApplicationContext에서 로딩된 객체가 스프링 컨테이너에서 실행된다. (DB관련 서비스 등,,)
클라이언트로부터 서버에 요청이 들어온다.
요청을 받은 서버는 클라이언트의 요청을 처리하는 DispatcherServlet을 생성한다.
DispatherServlet은 Servlet Context 단위의 설정인 Servlet-ApplicationContext를 로딩한다.
DispatcherServlet은 사용자의 요청을 처리한다.
스레드를 생성하여 SpringContainer에 IoC로 관리되는 컨트롤러를 탐색하고 실행시킨다(비즈니스 로직 처리). 이후 클리이언트에게 응답할 View를 탐색하고, 응답 데이터와 View를 클라이언트에게 전달한다.