2012-04-26 148 views
4

我们有一个使用Spring BlazeDS集成的应用程序。到目前为止,我们刚刚使用Spring和Flex,并且它工作正常。我们现在也需要添加一些Spring MVC控制器。使用Spring BlazeDS文档指出,要做到这一点的方法是声明在web.xml中 2个sperate上下文,如下所示:如何在不同的Spring上下文之间共享Spring bean?

<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> 

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

回答

6

使用ContextLoaderListener创建父上下文。 DispatcherServlet上下文将自动成为该上下文的子项。

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

如果您使用<component-scan>请确保您不会意外地将类扫描到多个上下文中。看到我的回答here

+0

“意外地将类扫描到多个上下文中是一个关键点”。谢谢! – cwu9T9 2015-01-06 21:36:53

1

添加到您的web.xml:

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

通过扫描定义的所有豆类和直接的定义将可用于您的BlazeDS和终端用SpringMVC。

相关问题