반응형
이번 글은 스프링 프레임워크(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) 패턴
참고자료
반응형
최근댓글