[SPRING] Spring MVC가 최소한 두 개의 컨텍스트를 필요로하는 이유는 무엇입니까?
SPRINGSpring MVC가 최소한 두 개의 컨텍스트를 필요로하는 이유는 무엇입니까?
Spring MVC에는 두 가지 상황이있다. 하나는 ContextLoaderListener에 의해 부팅되는 응용 프로그램 컨텍스트 또는 전역 컨텍스트입니다. contextConfigLocation 매개 변수에 언급 된 모든 구성 파일을 사용합니다.
Spring MVC를 사용하고 있다면 Dispatcher 서블릿이 필요합니다.이 서블릿은 웹 애플리케이션 컨테이너라고도하는 다른 컨테이너를 부팅합니다. 이 컨테이너는 전역 컨테이너를 부모로 사용합니다.
struts1과 spring을 통합 할 때 하나의 컨텍스트 만 존재합니다. 왜 봄 MVC 두 필요합니까? spring mvc를 사용할 때 하나의 컨텍스트만을 사용할 수 있습니까?
감사!
해결법
-
==============================
1.각각 다른 용도로 사용되는 두 개의 개별적인 Dispatcher가 있고 각각의 고유 한 종속 항목이 있다고 가정 해보십시오. 개별 컨텍스트를 사용하여 독립적으로 구성 할 수 있습니다.
각각 다른 용도로 사용되는 두 개의 개별적인 Dispatcher가 있고 각각의 고유 한 종속 항목이 있다고 가정 해보십시오. 개별 컨텍스트를 사용하여 독립적으로 구성 할 수 있습니다.
공유 구성이 있으면 '글로벌'컨텍스트로 이동할 수 있습니다.
DispatcherServlet을 사용하여 하나의 컨텍스트 만 가질 수 있다고 생각하지 않습니다. 고유 한 컨텍스트를 만들고 부모 컨텍스트에 연결합니다 (FrameworkServlet 수퍼 클래스를 통해).
FrameworkServlet.createWebApplicationContext
-
==============================
2.루트 웹 애플리케이션 컨텍스트와 하위 서블릿 컨텍스트를 갖는 것은 하나의 옵션 일뿐입니다. 애플리케이션에 두 번째 서블릿이 없다는 것을 알고 있다면 전체 웹 애플리케이션에 대해 하나의 Spring 컨텍스트를 갖는 것이 더 간단 할 것이다.
루트 웹 애플리케이션 컨텍스트와 하위 서블릿 컨텍스트를 갖는 것은 하나의 옵션 일뿐입니다. 애플리케이션에 두 번째 서블릿이 없다는 것을 알고 있다면 전체 웹 애플리케이션에 대해 하나의 Spring 컨텍스트를 갖는 것이 더 간단 할 것이다.
web.xml에서 ContextLoaderListener (및 그에 수반되는 contextConfigLocation context-param)를 제거하고 모든 bean 정의를 서블릿 컨텍스트 ([servlet-name] -servlet.xml)를 정의하는 xml로 이동하여이 설정을 수행 할 수 있습니다.
FrameworkServlet (DispatcherServlet의 수퍼 클래스)은 서블릿 컨텍스트를 만들 때 루트 응용 프로그램 컨텍스트가 있는지 신경 쓰지 않기 때문에 가능합니다. 가능한 경우 루트 컨텍스트를 부모로 릴레이합니다. 관련 코드는 여기를 참조하십시오.
-
==============================
3.이 답변을 확인하십시오 Spring Framework의 여러 컨테이너 정보
이 답변을 확인하십시오 Spring Framework의 여러 컨테이너 정보
예, 한 가지 상황 만 가질 수 있습니다.
코드 재사용을 위해 WebApplicationContext가 아닌 Application Context에서 서비스를 분리하는 것이 더 좋을 것입니다. 그러나 이것은 강요가 아닙니다. 단지 webApplicationcontext 만 유지할 수 있습니다.
from https://stackoverflow.com/questions/18682486/why-does-spring-mvc-need-at-least-two-contexts by cc-by-sa and MIT license