我们有一个使用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>
这是我的问题:在两种情况下都需要使用Spring bean - spring-mvc 一个和 flex 一个。如何做到这一点 - 如何在一个上下文中声明一个bean(在xml中或通过组件扫描)并允许它与在其他上下文中声明的bean共享? 谢谢 !
答案 0 :(得分:7)
使用ContextLoaderListener创建父上下文。 DispatcherServlet
上下文将自动成为该上下文的子项。
在父上下文中创建共享bean,并在子上下文中的bean中引用它们。
如果您使用<component-scan>
,请确保不会意外地将类扫描到多个上下文中。请参阅我的回答here。
答案 1 :(得分: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端点。