4

我们有一个使用 Spring BlazeDS 集成的应用程序。到目前为止,我们一直在使用 Spring 和 Flex,它运行良好。我们现在还需要添加一些 Spring 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> 

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

4

2 回答 2

8

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

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

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

于 2012-04-26T22:49:44.587 回答
1

将此添加到您的 web.xml:

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

通过扫描和直接定义定义的 bean 都可用于您的 BlazeDS 和 SpringMVC 端点。

于 2014-12-09T17:20:58.837 回答