읽은 책 정리/코드로 배우는 스프링 웹 프로젝트

[Spring] 스프링 MVC의 기본구조

포포015 2020. 12. 14. 20:08

*스프링 프레임 워크란?

 스프링 MVC는 스프링의 서브 프로젝트라는것. 

 스프링은 하나의 기능을 위해서 만들어진 프레임워크가 아니라 '코어'라고 할수 있는 프레임워크에

 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할수 있도록 개발됨

 

*프로젝트의 로딩구조

 프로젝트 구동시 관여하는 xml은 web.xml, root-contex.xml, servlet-context.xml 파일임.

 web.xml은 Tomcat 구동과 관련된 설정이고 나머지 두파일은 스프링과 관련된 설정 

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

 

<context-param> 에는 root-contex.xml 경로가 설정되있고 

<listener>에는 스프링 mvc의 ContextLoaderListener가 등록되있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
    <!-- 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>
 
    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 
</web-app>
 
cs

프로젝트 실행시 가장 먼저 로그 출력하며 기록 , root-context.xml 처리가 되면 파일에 있는 빈설정이 동작함.

root-context.xml에 정의된 객체들은 스프링영역에 생성되고 객체들간의 의존성 처리된후 

스프링 mvc에서 사용하는 dispatcherServlet이라는 서블릿이 동작.(가장 핵심 클래스)

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

다 처리후 등록된 객체들은 기존에 만들어진객체들과 같이 연동하게 됨.

 

*모델 2와 스프링

스프링 MVC 역시 내부적으로는 Servlet API 를 활용함.

모델 2 방식은 쉽게 말해서 '로직과 화면을 분리'하는 스타일의 개발방식

이렇게 설계하는 가장 중요한 이유는 나중에 View를 교체하더라도

사용자가 호출하는 url 자체에 변화가 없게 만들어 주기 때문

mvc 개발 방식