你如何分享不同的春天上下文之间的Spring bean?(How do you share Spri

2019-06-24 00:30发布

我们有使用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的- 弹簧MVC一个和Flex之一。 如何才能做到这一点 - 一个人如何可以在一个语境声明一个bean(无论是在XML或组件扫描),并允许它与其他上下文中声明的bean可以共享? 谢谢 !

Answer 1:

创建使用父上下文的ContextLoaderListener 。 在DispatcherServlet上下文将自动成为这方面的儿童。

在父上下文创建共享豆类和引用它们豆在孩子上下文。

如果您正在使用<component-scan>确保你不小心扫描类成多个上下文。 见我的答案在这里 。



Answer 2:

添加到您的web.xml:

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

通过扫描和直接的定义来定义这两种豆类将供您BlazeDS和终端用SpringMVC。



文章来源: How do you share Spring beans between different Spring contexts?