2012-04-26 152 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。

相關問題