처음 스프링을 설정할 때 세가지 xml파일들이 어떤 역할을 하고, 어떤 차이점이 있는지에대해 궁금해서 이번 포스팅에서는 위의 servlet-context, root-context, web에 대해 알아볼까 합니다.

 

1. web.xml

 

웹 어플리케이션 서버(WAS)가 최초로 구동 될 때(톰캣이 최초로 구동이 될 때) 각종 설정을 정의합니다. 이 때 파일 내에서 여러 xml파일을 인식 할 수 있도록 설정되어있으며, 설정을 위한 설정파일입니다.

 

<!-- 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>

 

context-param 태그 내에 root-context로 모든 서블릿과 필터들이 공유함으로 root-context.xml을 정의했습니다.

또한 listener 태그로 모든 서블릿과 필터들에 공유되는 스프링 컨테이너를 생성합니다. 다시말해 root-context에 정의되어있는 것들을 모든 서블릿들과 필터가 공유할 수 있게 해줍니다.

 

2. servlet-context.xml

 

웹 어플리케이션에서 클라이언트의 요청을 받기 위한 컨텍스트 설정이며, 요청과 관련된 객체를 정의합니다. url과 관련된 Controller나, 어노테이션, ViewResolver(컨트롤러에서 view 정보에 대해 설정하는 것), Interceptor, MultipartResolver 등의 설정을 해줍니다.

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

servlet-context 파일을 보면 위처럼 주석을 볼 수 있는데, 해석하면 "DispatcherServlet Context : 이 서블릿의 요청처리 인프라를 정의한다."라고 해석할 수 있습니다. 이는 DispatcherServlet과 관련된 설정을 하는 것임을 의미합니다.

 

3. root-context.xml

 

servlet-context와는 반대로 view와 관련되지 않은 객체를 정의합니다. Service, Repository(DAO), DB등 비즈니스 로직과 관련된 설정을 해줍니다.

 

위의 자료에서 다수의 서블릿을 가지게 되는 경우 다수의 servlet-context가 root-context의 bean 정보들을 참조하는 구조가 될 수 있습니다.

 

 

 

 

참고자료

debugdaldal.tistory.com/127

nice2049.tistory.com/entry/spring-rootContext-%EA%B7%B8%EB%A6%AC%EA%B3%A0-servletContext-%EB%8C%80%ED%95%B4%EC%84%9C

thiago6.tistory.com/70

docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc

'코딩 > Spring' 카테고리의 다른 글

Spring Model  (1) 2020.08.28
Spring Connection Pool(DBCP), Hikari CP  (0) 2020.08.24
Spring Lombok Log4j 오류뜰 때  (2) 2020.08.21
Spring 스프링을 사용하는 이유  (0) 2020.08.20
Spring Lombok  (0) 2020.08.18
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기