복붙노트

[SPRING] 다른 Spring 컨텍스트간에 Spring 빈을 어떻게 공유합니까?

SPRING

다른 Spring 컨텍스트간에 Spring 빈을 어떻게 공유합니까?

우리는 Spring BlazeDS 통합을 사용하는 응용 프로그램을 가지고 있습니다. 지금까지 우리는 Spring과 Flex를 사용하고 있으며 잘 작동합니다. 이제 스프링 MVC 컨트롤러를 추가해야한다. Spring BlazeDS 문서는 다음과 같이 web.xml에 두 개의 정교한 컨텍스트를 선언하는 방법이라고 설명합니다.

<servlet>
    <servlet-name>flex</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>flex</servlet-name>
    <url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping> 

여기에 내 질문입니다 : 거기에 스프링 콩은 두 컨텍스트 내에서 사용되는 데 필요한 - 스프링 - MV와 플렉스 하나. 이것을 어떻게 할 수 있습니까? 하나의 컨텍스트에서 Bean (XML 또는 컴포넌트 검색 중 하나)을 선언하고 다른 컨텍스트에서 선언 된 Bean과 공유 할 수있는 방법은 무엇입니까? 감사 !

해결법

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

    1.ContextLoaderListener를 사용하여 부모 컨텍스트를 만듭니다. DispatcherServlet 컨텍스트는 자동으로 해당 컨텍스트의 자식이됩니다.

    ContextLoaderListener를 사용하여 부모 컨텍스트를 만듭니다. DispatcherServlet 컨텍스트는 자동으로 해당 컨텍스트의 자식이됩니다.

    상위 컨텍스트에서 공유 빈을 작성하고 하위 컨텍스트의 빈에서 참조하십시오.

    을 사용하는 경우 실수로 클래스를 여러 컨텍스트로 검사하지 않도록하십시오. 내 대답은 여기를 참조하십시오.

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

    2.이것을 web.xml에 추가하십시오 :

    이것을 web.xml에 추가하십시오 :

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/YOUR_APP_CONTEXT.xml</param-value>
    </context-param>
    

    스캐닝과 직접 정의를 통해 정의 된 Bean은 모두 BlazeDS 및 SpringMVC 끝점에서 사용할 수 있습니다.

  3. from https://stackoverflow.com/questions/10339174/how-do-you-share-spring-beans-between-different-spring-contexts by cc-by-sa and MIT license