[Spring] 스프링 부트 동작원리

스프링 부트 동작원리

스프링 부트의 서버 실행과 클라이언트의 요청을 받는 과정을 알아보자.

1

스프링 부트가 동작 될 때 두 가지 영역으로 나눠서 생각할 수 있다.
서버가 실행됨과 동시에 생성되는 객체들이 있고 이러한 객체는 모든 스레드가 공유하게 된다.
스프링은 클라이언트의 request가 들어올 때마다 하나의 스레드로 관리하는데, 요청 때마다 생성하지 않고 공통으로 이용해야 하는 것들은 이때 만들어진다.
Database Connection 및 공통적으로 사용해야 하는 객체들을 이때 생성한다.
이 외의 객체들은 클라이언트가 Request가 올 때마다 스레드 별로 생성되어 사용된다.

1.web.xml

서버의 실행과 동시에 톰켓(WAS)에 의해 web.xml이 실행된다.

세션의 유효시간, 서블릿 매핑, 에러 페이지 처리, 리스너/필터 설정, 보안

등 서버의 운영에 대한 여러 가지 전반적인 일을 담당한다.

2.ContextLoaderListener, root-context

web.xml이 실행된 뒤 ContextLoaderListener가 실행된다.
ContextLoaderListenerroot-context를 읽고 스프링 컨테이너에 Database Connection 및 공통적으로 사용해야 하는 객체들을 생성한다.

3.Request

공통적으로 공유해야 하는 객체들이 스프링 컨 터이너에 생성된 후 클라이언트에게 request를 받을 수 있다.

4.DispatcherServlet

DispatcherServlet은 기존의 FrontControllerReqeustDispatcher의 역할을 합쳐놓은 것이다.
클라이언트에게 요청이 들어오면 DispatcherServletHandler Mapping을 하여 해당 요청의 주소를 컨트롤러의 메서드와 매칭해준다.