복붙노트

[SPRING] 스프링 프레임 워크의 여러 컨테이너 정보

SPRING

스프링 프레임 워크의 여러 컨테이너 정보

일반적인 Spring MVC 프로젝트에는 두 개의 "컨테이너"가있다 : 하나는 ContextLoaderListener에 의해 생성되고 다른 하나는 DispatchServlet에 의해 생성된다.

내가 알고 싶은 건,이 두 개의 IoC 컨테이너 인스턴스입니까? (두 개의 빈 설정 파일이 있는데 하나는 root-context.xml이고 다른 하나는 servlet-context.xml입니다)

컨테이너가 2 개인 경우 관계가 무엇입니까?

한 컨테이너에서 선언 된 콩을 다른 컨테이너에서 사용할 수 있습니까?

해결법

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

    1.봄 공식 웹 사이트 :

    봄 공식 웹 사이트 :

    다시 공식 문서에서 :

    이제 여기에 명시된 바와 같이 귀하의 질문에 오는 :

    이 링크를 확인하십시오.

    Spring Framework에서 applicationContext.xml과 spring-servlet.xml의 차이점

    http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-basics

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

    2.생성 된 컨테이너는 두 가지가 아닙니다. 일반적으로 Spring이 객체가 필요할 때 servlet-context.xml에 선언 된 객체를 인스턴스화하려고합니다. 따라서 servlet-context.xml 구성 파일을 Dispatcher 서블릿에 매핑합니다. 즉 요청이 디스패처 서블릿에 도달 할 때 객체를 초기화하려고합니다.

    생성 된 컨테이너는 두 가지가 아닙니다. 일반적으로 Spring이 객체가 필요할 때 servlet-context.xml에 선언 된 객체를 인스턴스화하려고합니다. 따라서 servlet-context.xml 구성 파일을 Dispatcher 서블릿에 매핑합니다. 즉 요청이 디스패처 서블릿에 도달 할 때 객체를 초기화하려고합니다.

    <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 태그에 구성 파일을 선언합니다.

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>
    

    servlet-context.xml과 root-context.xml에 별도의 bean을 선언 한 다음 사용자 정의 Context Loader Listener 클래스에서 autowiring하여 작성함으로써이를 테스트 할 수있다. 루트 컨텍스트 인스턴스 만 초기화되고 서블릿 컨텍스트 bean은 null임을 알 수 있습니다.

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

    3.스프링 MVC는 최소한 2 개의 컨테이너를 가지고있다.

    스프링 MVC는 최소한 2 개의 컨테이너를 가지고있다.

    그리고 웹 애플리케이션은 DispatcherServlet을 얼마든지 정의 할 수 있습니다. 각 서블릿은 자체 네임 스페이스에서 작동하며 매핑, 처리기 등으로 자체 응용 프로그램 컨텍스트를로드합니다. ContextLoaderListener에 의해로드 된 루트 응용 프로그램 컨텍스트 (있는 경우) 만 공유됩니다. 따라서 임의의 수의 자식 컨테이너를 가질 수 있습니다.

  4. ==============================

    4.

  5. from https://stackoverflow.com/questions/18578143/about-multiple-containers-in-spring-framework by cc-by-sa and MIT license