Spring은 하나의 기능을 위해서만 만들어진 프레임워크가 아니다.
예제를 Spring Legacy Project로 생성한 경우 servlet-context.xml과 root-context.xml로 설정파일이 분리된 것을 확인할 수 있음
STS에서 new - spring legacy project - spring mvc project 클릭
프로젝트 이름은 ex01로 작성한다.
pom.xml수정은 기존에 포스팅한 대로 하면된다. 간단하게 정리하자면
그리고 Spring Legacy Project로 생성된 프로젝트는 서블릿버전이 2.5로 잡혀있다. Java설정을 한다면 3.0이상으로 바꾸어 주는것이 좋다. javax-servlet-api
의 버전을 3.1.0 이상으로 골라잡아 maven repository에서 복사해온다.
프로젝트를 Run as - Run on Server 로 실행해 보면 약간의 로그들이 기록된다.
로그를 살펴보면 프로젝트 구동 시 관여하는 XML파일로 web.xml, root-context.xml, servlet-context.xml 등이 있음을 알 수 있다.
프로젝트 구동은 web.xml에서 시작한다. 이 파일에는 tomcat 관련 설정들이 있다.
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
root-context.xml의 경로가 잡혀있고, 스프링MVC의 ContextLoaderListener가 <listen>에 등록되어 있음을 확인.
root-context.xml에서는 파일에 적혀진 Bean들의 설정들이 동작한다. (의존성 주입)
이후 스프링 MVC에서 사용하는 DispatcherServlet
이라는 서블릿과 관련된 설정이 동작한다.
DispatcherServlet은 XmlWebApplicationContext를 이용해서 servlet-context.xml을 로딩하고 해석함. 이때 등록된 객체들은 기존의 root-context.xml을 통해 등록된 객체들과 연동된다.
Spring MVC를 사용한다면 개발자들은 직접적으로 HttpServletRequest / HttpServletResponse 등 JSP/Servlet의 API를 직접 사용할 필요성이 현저히 줄어든다.
스프링 MVC가 내부적으로 JSP/Servlet을 처리해줌
모델2 = 로직과 화면을 분리
https://jeong-pro.tistory.com/96
직접 정리하려하였으나 매우 깔끔하게 정리해주신 포스팅이 있어 링크를 남김.