JAVA/SPRING

[spring] web.xml 해석.

gracelove91 2019. 7. 31. 23:50

web.xml 전체.



루트 웹 애플리케이션 컨텍스트를 등록하는 방법.
ContexstLoaderListener가 ServletContextListener를 구현함을 알 수 있다.


스프링은 웹 어플리케이션의 시작과 종료시 발생하는 이벤트를 처리하는 리스너인 ServletContextListener를 이용한다. 이 인터페이스를 구현해서 웹 애플리케이션이 시작될 때 루트애플리케이션 컨텍스트를 만들어 초기화하고, 웹 어플리케이션이 종료될 때 컨텍스트를 함께 종료하는 기능을 가진 리스너를 만들 수 있다. 스프링은 이러한 기능을 가진 위와 같은 ContextLoaderListener를 제공한다.

ContextLoaderListener는 웹 어플리케이션이 시작할 때 자동으로 루트 애플리케이션 컨텍스트를 만들고 초기화해준다. 이 루트 어플리케이션의 디폴트 설정은 다음과 같다.

  • 애플리케이션 컨텍스트 클래스 : XmlWebApplicationContext
  • XML 설정파일 위치 : /WEB-INF/applicationContext.xml

만약 디폴트 설정을 바꾸고 싶다면 아래와 같이 작성해주자.

루트 애플리케이션 컨텍스트를 커스텀으로 설정한다.

이렇게 작성한다면 디폴트설정인 /WEB-INF/applicationContext.xml은 무시하고, /WEB-INF/spring/appServlet/servlet-context.xml로 루트어플리케이션이 설정되게 된다.



Dispatcher servlet 설정

각 DispatcherServlet은 서블릿이 초기화될 때 자신만의 컨텍스트를 생성하고 초기화한다. 동시에 루트 애플리케이션 컨텍스트를 찾아서 자신의 부모 컨텍스트로 사용한다.
디폴트 설정은 다음과 같은 규칙으로 적용된다.
/WEB-INF/ + 서블릿네임스페이스 + .xml

여기서 서블릿네임스페이스는 servlet-name의 값에 '-servlet'을 붙여서 만든다.
ex)
servlet-name이 spring이라면 네임스페이스는 spring-servlet이 된다
이 경우에 디폴트 설정파일 위치는 /WEB-INF/spring-servlet.xml 이 된다.

만약 디폴트 설정파일 위치를 바꾸고 싶다면 위 이미지의 <init-param>을 이용하면 된다.
위 이미지와 같이 설정할 경우 /WEB-INF/appServlet-servlet.xml이 아니라,
설정파일 위치는 /WEB-INF/spring/appServlet/servlet-context.xml이 된다.