복붙노트

[SPRING] Spring MVC가 최소한 두 개의 컨텍스트를 필요로하는 이유는 무엇입니까?

SPRING

Spring MVC가 최소한 두 개의 컨텍스트를 필요로하는 이유는 무엇입니까?

Spring MVC에는 두 가지 상황이있다. 하나는 ContextLoaderListener에 의해 부팅되는 응용 프로그램 컨텍스트 또는 전역 컨텍스트입니다. contextConfigLocation 매개 변수에 언급 된 모든 구성 파일을 사용합니다.

Spring MVC를 사용하고 있다면 Dispatcher 서블릿이 필요합니다.이 서블릿은 웹 애플리케이션 컨테이너라고도하는 다른 컨테이너를 부팅합니다. 이 컨테이너는 전역 컨테이너를 부모로 사용합니다.

struts1과 spring을 통합 할 때 하나의 컨텍스트 만 존재합니다. 왜 봄 MVC 두 필요합니까? spring mvc를 사용할 때 하나의 컨텍스트만을 사용할 수 있습니까?

감사!

해결법

  1. ==============================

    1.각각 다른 용도로 사용되는 두 개의 개별적인 Dispatcher가 있고 각각의 고유 한 종속 항목이 있다고 가정 해보십시오. 개별 컨텍스트를 사용하여 독립적으로 구성 할 수 있습니다.

    각각 다른 용도로 사용되는 두 개의 개별적인 Dispatcher가 있고 각각의 고유 한 종속 항목이 있다고 가정 해보십시오. 개별 컨텍스트를 사용하여 독립적으로 구성 할 수 있습니다.

    공유 구성이 있으면 '글로벌'컨텍스트로 이동할 수 있습니다.

    DispatcherServlet을 사용하여 하나의 컨텍스트 만 가질 수 있다고 생각하지 않습니다. 고유 한 컨텍스트를 만들고 부모 컨텍스트에 연결합니다 (FrameworkServlet 수퍼 클래스를 통해).

    FrameworkServlet.createWebApplicationContext

  2. ==============================

    2.루트 웹 애플리케이션 컨텍스트와 하위 서블릿 컨텍스트를 갖는 것은 하나의 옵션 일뿐입니다. 애플리케이션에 두 번째 서블릿이 없다는 것을 알고 있다면 전체 웹 애플리케이션에 대해 하나의 Spring 컨텍스트를 갖는 것이 더 간단 할 것이다.

    루트 웹 애플리케이션 컨텍스트와 하위 서블릿 컨텍스트를 갖는 것은 하나의 옵션 일뿐입니다. 애플리케이션에 두 번째 서블릿이 없다는 것을 알고 있다면 전체 웹 애플리케이션에 대해 하나의 Spring 컨텍스트를 갖는 것이 더 간단 할 것이다.

    web.xml에서 ContextLoaderListener (및 그에 수반되는 contextConfigLocation context-param)를 제거하고 모든 bean 정의를 서블릿 컨텍스트 ([servlet-name] -servlet.xml)를 정의하는 xml로 이동하여이 설정을 수행 할 수 있습니다.

    FrameworkServlet (DispatcherServlet의 수퍼 클래스)은 서블릿 컨텍스트를 만들 때 루트 응용 프로그램 컨텍스트가 있는지 신경 쓰지 않기 때문에 가능합니다. 가능한 경우 루트 컨텍스트를 부모로 릴레이합니다. 관련 코드는 여기를 참조하십시오.

  3. ==============================

    3.이 답변을 확인하십시오 Spring Framework의 여러 컨테이너 정보

    이 답변을 확인하십시오 Spring Framework의 여러 컨테이너 정보

    예, 한 가지 상황 만 가질 수 있습니다.

    코드 재사용을 위해 WebApplicationContext가 아닌 Application Context에서 서비스를 분리하는 것이 더 좋을 것입니다. 그러나 이것은 강요가 아닙니다. 단지 webApplicationcontext 만 유지할 수 있습니다.

  4. from https://stackoverflow.com/questions/18682486/why-does-spring-mvc-need-at-least-two-contexts by cc-by-sa and MIT license