DispatcherServlet

dongeranguk·2021년 10월 3일
0
post-thumbnail

1. DispatcherServlet

DispatcherServlet 은 스프링 MVC 프레임워크의 중심 이다.

웹 브라우저의 요청을 DispatcherServlet이 받게 되며, DispatcherServlet은 관련 컴포넌트를 이용해서 웹 브라우저의 요청을 처리한 뒤 결과를 전송하게 된다.

DispatcherServlet은 별도의 초기화 파라미터가 없다면,
웹 어플리케이션의 /WEB-INF/ 디렉터리에 위치한 [서블릿이름]-servlet.xml 파일을 이용해서 스프링 컨테이너를 생성한다.

한 개 이상의 설정 파일을 사용해야 하거나 또는 이름이 [이름]-servlet.xml 형식이 아닌 파일을 사용하려면 다음과 같이 contextConfigLocation 초기화 파라미터로 설정 파일 목록을 지정해야 한다.

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
	org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
	<param-name>contextConfigLocation</param-name>
    <param-value>
    	/WEB-INF/main.xml
        /WEB-INF/sub.xml
        classpath:/common.xml
    </param-value>
</init-param>
</servlet>

각 설정 파일의 경로는 웹 어플리케이션 루트 디렉터리를 기준으로 하며, "file:"이나, "classpath:" 접두어를 이용해서 로컬 파일이나, 클래스패스에 위치한 파일을 이용할 수 있다.

만약, 매핑되는 핸들러가 존재하지 않는다면, 아래와 같은 빈 설정을 통해 요청을 처리하게 한다.

  • <mvc:default-servlet-handler />
  • <mvc:resources mapping="/resources/**" location="/resources" />

2. Root Context 와 Servlet Context

스프링 컨테이너 == IoC Container == Application Context

다음은 Root Context와 Servlet Context를 등록된 web.xml 파일이다.

💬 보통 Root Context는 context-.xml 으로
Servlet Context는 -servlet.xml 으로 이름을 짓는다.

2.1. Root Context

주로 데이터의 조회 및 처리를 담당하는 Service, Database에 관한 Bean들에 관한 설정을 담고 있다.

또한, Root Context에 등록되는 빈들은 모든 Context에서 공유가 가능하다.

2.2. Servlet Context

Servlet 구성에 필요한 Controller, View Resolver, HandlerMapping 등 웹과 관련된 Bean들에 관한 설정을 담고 있다.

Servlet Context에 등록된 빈들은 Servlet Context 내에서만 사용된다.

(참조 : Context Hierarchy ref. https://docs.spring.io/spring/docs)

0개의 댓글