你如何在不同的Spring上下文之间共享Spring bean?

use*_*610 4 spring blazeds spring-mvc

我们有一个使用Spring BlazeDS集成的应用程序.到目前为止,我们刚刚使用Spring和Flex,它运行良好.我们现在需要添加一些Spring MVC控制器.Spring BlazeDS文档指出,执行此操作的方法是在web.xml中声明两个sperate上下文,如下所示:

<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> 
Run Code Online (Sandbox Code Playgroud)

这是我的问题:在两种情况下都需要使用Spring bean - spring-mvc one和flex one.如何做到这一点 - 如何在一个上下文中声明一个bean(在xml中或通过组件扫描)并允许它与在其他上下文中声明的bean共享?谢谢 !

sou*_*ica 8

使用ContextLoaderListener创建父上下文.该DispatcherServlet上下文将自动成为这方面的儿童.

在父上下文中创建共享bean,并在子上下文中的bean中引用它们.

如果您正在使用,请<component-scan>确保您不会意外地将类扫描到多个上下文中.在这里看到我的答案.