본문 바로가기

WS & WAS/common

Servelet Container - Spring Framework

서블릿 컨테이너에서의 스프링 실행과정

 

Servlet Container 에서 Spring Framework 가 어떻게 동작하는지를 알아보자

 

Spring MVC 에는 Dispatcher Servlet 이라는 서블릿이 있고

Servlet Container 에서 이 Dispatcher Servlet 을 관리하고 있다.

 

톰캣에서 스프링이 실행되는 과정

모든 요청과 응답은 Dispatcher Servlet에서 관리가 되고 요청 정보를 기반으로 Dispatcher Servlet 안에 있는

Application Context에 등록되어있는 빈을 호출해서 비즈니스 로직을 수행한다.

 

 

Servlet Container

여기서 서블릿 컨테이너는 서블릿의 라이프 사이클을 관리하는데,

서블릿으로 구현되는 Dispatcher Servlet 도 서블릿 컨테이너에서 관리를 하게 된다.

요청이 오게되면 쓰레드를 하나씩 생성하거나 스레드풀에서 가져와서 요청을 처리하게 된다.

 

 

Dispatcher Servlet

Dispatcher Servlet의 상속 구조

상속 받은걸 보면 HttpServlet 을 상속 받은걸 알 수 있다.

 

요청 처리 흐름

 

모든 서블릿을 url 마다 매핑해서 사용하지 않고 

요청 앞단에 Front controller 를 두고 요청에 맞는 컨트롤러를 매핑시켜주는 방식을 사용하는데,

이 Front controller 역할을 하는게 Dispatcher Servlet 이다.

 

주요 역할 

 

Handler Mapping

요청을 분석해서 매핑된 컨트롤러가 있는지 확인한다.

 

Handler Adapter

찾은 매핑 컨트롤러에 요청 처리를 보낸다.

컨트롤러는 Application Context에 등록되어있는 빈으로 로직을 수행

 

View Resolver

컨트롤러에서 뷰를 리턴했다면 뷰를 찾아서 클라이언트에 리턴란다.

 

 

Spring Container

 

Dispatcher Servlet 내부에 Servlet WebApplicationContext와 Root WebApplicationContext 이다.

이 스프링 컨테이너들은 자바 오브젝트인 Bean 의 라이프 사이클을 관리하고

IOC 와 DI 를 제공한다.

 

 

 

요청 부터 전체 적인 흐름

 

1. 어플리케이션이 실행되면 톰켓이 web.xml 을 읽고 web.xml 에 있는 ContextLoaderListener 를 생성한다.

2. ContextLoaderListener 는 ApplicationContext을 생성한다.

3. 클라이언트로부터 요청이 오면 웹서버로 요청이 전달되고 서블릿 컨테이너로 전달 된다.

4. Dispatcher Servlet 이 생성 안되어 있다면 생성 후 init()메소드 실행

5. Dispatcher Servlet은 프론트 컨트롤러 역할을 하고 핸들러매핑을 통해 조회후 핸들러 어댑터로 요청 전달

6. 로직 수행

 

 

 

 

 

'WS & WAS > common' 카테고리의 다른 글

Servlet  (0) 2021.08.13
Web Application Server  (0) 2021.08.12
Web Server  (0) 2021.08.12