본문 바로가기

Spring 3.0 - 4.3

Spring Web MVC를 이용하여 웹 서버 구축하기 - (1) 개념

 

여기서는 웹 서버가 구동되기까지의 과정을 살펴볼 것이다.

 

프로젝트 구동 시 관여하는 XML은 다음으로 크게 3가지이다.

  • web.xml - Tomcat 구동과 관련된 설정
  • root-context.xml - Spring과 관련된 설정 
  • servlet-context.xml -  Spring과 관련된 설정

 

프로젝트의 구동은 web.xml에서 시작한다.

web.xml의 상단에는 가장 먼저 구동되는 Context Listener가 등록되어 있다.

 

<context-param> 에는 root-context.xml 의 경로가 설정되어 있고, <listener> 에는 스프링의 mvc의 ContextLoaderListener가 등록되어 있는 것을 볼 수 있다.

 

 

ContextLoaderListner는 해당 웹 어플리케이션 구동 시 같이 동작하므로 해당 프로젝트를 실행하면 다음과 같이 가장 먼저 로그를 출력하면서 기록하는 것을 볼 수 있다.

 

 

root-context.xml이 처리되면 파일에 있는 빈(Bean) 설정들이 동작하게 된다.

이를 그림으로 표현하면 다음과 같다.

( r :  root-context.xml에서 정의된 bean)

 

 

 

root-context.xml이 처리된 후에는 스프링 MVC에서 사용하는 DispatcherServlet이라는 서블릿과 관련된 설정들이 동작한다.

org.springframework.web.servlet.DispatcherServlet 클래스는 스프링 MVC의 구조에서 가장 핵심적인 역할을 하는 클래스이다.

내부적으로 웹 관련 처리의 준비작업을 진행하는데 이때 사용하는 파일이 servlet-context.xml 이다. 

 

 

프로젝트가 실행될 때 로그의 일부를 보면 아래와 같다. 

DispatcherServlet 에서 XmlWebApplicationContext를 이용해서 servlet-context.xml을 로딩하고 해석하기 시작한다.

이 과정에서 servlet-context.xml에 등록된 객체(Bean)들은 기존에 만들어진 객체(Bean)들과 같이 연동되게 된다.

( s :  servlet-context.xml에서 정의된 bean)

 

 

Java를 이용하는 웹 애플리케이션을 제작할 때 보통 스프링MVC를 사용하기 이전에 Servlet/JSP 기술을 활용해서 제작하는 방식을 먼저 배우게 된다. 이후에는 모델 2라는 방식에 대해서 학습하게 되는데, 스프링MVC의 경우 이러한 부분은 개발자들에게 보여주지 않고, 개발자들은 자신이 필요한 부분만을 집중해서 개발할 수 있는 구조로 만들어져 있다. 

 

Servlet/JSP 에서는 HttpServletRequest/HttpServletResponse 라는 타입의 객체를 이용해 브라우저에서 전송한 정보를 처리하는 방식이다. 스프링 MVC의 경우 이 위에 하나의 계층을 더한 형태가 된다.

 

 

스프링 MVC를 이용하게 되면 개발자들은 직접적으로 HttpServletRequest/HttpServletResponse 등과 같이 Servlet/JSP의 API를 사용할 필요성이 현저하게 줄어든다. (이게 개발자 입장에선 매우 큰 장점!)

 

개발자의 코드는 스프링 MVC에서 동작하기 때문에 과거에는 스프링 MVC의 특정한 클래스를 상속하거나 인터페이스를 구현하는 형태로 개발할 수 있었지만, 스프링 2.5버전부터 등장한 어노테이션 방식으로 인해 최근 개발에는 어노테이션이나 XML등의 설정만으로 개발이 가능하게 됐다.