반응형

 

이번 글은 스프링 프레임워크(Spring Framework)의 실행 순서를 정리한다.

 

 

1. Tomcat(WAS)를 실행한다.

 

2. Tomcat(WAS)가 실행되면, Tomcat이 web.xml Loading.

- web.xml에는 설정을 위한 파일들을 정의한다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://JAVA.sun.com/xml/ns/j2ee" 
         xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd" 
         id="WebApp_ID" 
         version="3.0">
  <display-name>web</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
	        /WEB-INF/conf/spring/context/context-*.xml
	</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>common</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
				/WEB-INF/conf/spring/mvc/servlet-*.xml
	  </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

 

3. ContextLoaderListener 생성

위의 코드를 보면, ContextLoaderListener가 생성되어 웹 어플리케이션을 설정하기 위해 초기 세팅 작업을 하게 된다. 이 ContextLoaderListener는 web.xml에 있는 설정 파일들이 Loading 할 때 사용되고, 위의 코드에서 contextConfigLocation으로 설정파일들의 위치를 지정한다.

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

여기서, contextConfigLocation의 위치를 지정하지 않으면 root-context.xml로 설정 파일 위치를 잡는다.

ContextLoaderListener 클래스는 ServletContextListener 인터페이스 구현 및 ApplicationContext를 생성한다.

 

4. 생성된 ContextLoaderListener는 root-context.xml(applicationContext.xml)을 Loading 한다.

- 여기서 root-context.xml이나 applicationContext.xml은 개발자가 따로 생성하여 정의할 수 있다.

 

5. applicationContext.xml에 되어 있는 설정에 따라 Spring Container가 구동이 되고, 비니시스 로직, DAO, VO 객체들이 생성된다. 

 

6. Client가 Request를 던진다.

 

7. Client가 Request를 던지면, DispatcherServlet(Servlet)이 생성이 된다.

- web.xml에 보면, DispatcherServlet을 정의하는데, 여기서는 /WEB-INF/conf/spring/mvc 밑에 있는 servlet-*.xml을 바라보고 있다. 저 파일에 정의를 하면 된다.

<servlet>
    <servlet-name>common</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
				/WEB-INF/conf/spring/mvc/servlet-*.xml
	  </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

 

8. DispatcherServlet(Servlet)이 생성이 되면, servlet-context.xml을 Loading 하는데, 이 부분에서 component-scan에 대한 설정, 컨트롤러를 타기 전, intercepter 설정 등을 정의할 수 있다. 아래의 글을 보면 더 쉽게 이해할 수 있다.

2021.04.27 - [IT/스프링(Spring)] - 스프링(Spring) MVC(Model-View-Controller) 패턴

 

스프링(Spring) MVC(Model-View-Controller) 패턴

츄르사려고 코딩하는 코집사입니다. 1. 스프링(Spring) MVC(Model-View-Controller) 패턴 - MVC 패턴은 Model, View, Controller로 총 3가지 영역으로 분리를 한다. - MVC 패턴을 사용하는 이유는 유지보수가 용이하

yongku.tistory.com


참고자료

https://yoo-hyeok.tistory.com/139

https://javannspring.tistory.com/231

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기