[Spring] | Spring Web MVC 동작원리 정리
Spring Web Application의 실행순서
- 웹 어플리케이션이 실행되면 Tomcat(WAS)에 의해 web.xml이 로딩된다.
web.xml
에 등록되어 있는 ContextLoaderListener(자바 클래스)가 생성된다. ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현하고 있으며, ApplicationContext를 생성하는 역할을 수행한다.
- 생성된 ContextLoaderListener는
root-context.xml
을 로딩한다.
root-context.xml
에 등록되어 있는 Spring Container가 구동한다. 이 때 개발자가 작성한 비즈니스 로직(Service)에 대한 부분과 DB 로직(DAO), VO 객체들이 생성된다.
- 클라이언트로부터 요청(request)가 들어온다.
- DispatcherServlet(Servlet)이 생성된다. DispatcherServlet은 FrontController의 역할을 수행한다. 클라이언트로부터 요청온 메시지를 분석하여 알맞은 PageController에게 전달하고 응답을 받아 요청에 따른 응답을 어떻게 할지 결정한다. 실질적인 작업은 PageController에서 이루어진다. 이러한 클래스들을 HandlerMapping, ViewResolver 클래스라고 한다.
- DispatcherServlet은 servlet-context.xml을 로딩한다.
- 두 번째 Spring Container가 구동되며 응답에 맞는 pageController들이 동작한다. 이 때 첫번째 Spring Container가 구동되면서 생성된 DAO, VO, Service 클래스들과 협업하여 작업을 처리한다.