你如何在不同的春天环境之间分享春天的豆子



我们有一个使用 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-mvc 一个和 flex 一个。如何做到这一点 - 如何在一个上下文中声明一个 bean(在 xml 中或通过组件扫描),并允许它与在另一个上下文中声明的 bean 共享?谢谢!

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

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

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

将此添加到您的网站.xml:

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

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

相关内容

  • 没有找到相关文章

最新更新