XML설정
- Spring MVC (servlet-context.xml)
- Spring Core (root-context.xml)
- MyBatis (root-context.xml)
우선 새 ex01 프로젝트를 생성하자.
Spring MVC 프로젝트로 생성 후 필요한 설정들을 해 준다.
pom.xml에 롬복을 추가한다.
pom.xml에서 서블릿 2.5버전은 주석처리하고 3.1.0버전으로 수정한다.
<!-- Servlet -->
<!-- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency> -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
프로젝트 구동에는 다음 xml파일들이 관여한다.
web.xml
root-context.xml
servlet-context.xml
프로젝트 구동은 web.xml에서 시작한다.
web.xml의 상단에 등록된 Context Listener가 가장 먼저 구동된다.

root-context.xml의 경로가 설정되어 있고 listener에 ContextLoadListener가 등록되어 있다.
root-context.xml이 처리되면 파일에 있는 빈(Bean) 설정들이 동작한다.
설정된 빈들이 스프링 context(영역)안에 생성되고 객체들 간의 의존성이 처리된다.
다음으로 스프링 MVC에서 사용하는 DispatcherServlet 서블릿 관련 설정이 동작한다.

내부적으로 웹 처리 준비작업을 진행할 때 사용하는 파일이 servlet-context.xml이다. DispatcherServlet에서 XmlWebApplicationContext를 이용해 servlet-context.xml을 로딩하고 해석하기 시작한다. 이 과정에서 등록된 객체(빈)들은 기존에 만들어진 객체들과 연동된다.
Servlet + JSP에 하나의 계층을 더한 형태로, 내부적으로 서블릿 + JSP를 처리해 주기 때문에 개발자는 Servlet + JSP의 API에 신경쓰지 않고 앱을 제작할 수 있게 된다.
사용자 Request는 특별한 상황이 아니면 먼저 Controller를 호출하게 된다. 나중에 View를 교체하더라도 사용자가 호출하는 URL에 변화가 없게 만들어주기 때문이다. 컨트롤러는 데이터(모델)를 처리하고 Response에 필요한 데이터(모델)를 View에 전달하게 된다.