4

SpringBlazeDS統合を使用するアプリケーションがあります。これまでのところ、SpringとFlexを使用しており、正常に機能しています。現在、いくつかのSpringMVCコントローラーも追加する必要があります。Spring BlazeDSのドキュメントには、これを行う方法は、次のようにweb.xmlで2つの別個のコンテキストを宣言することであると記載されています。

<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> 

ここに私の質問があります:両方のコンテキスト内で使用する必要があるSpringBeanがあります-spring-mvcのものとflexのものです。どうすればこれを行うことができますか?あるコンテキストで(xmlまたはコンポーネントスキャンのいずれかで)Beanを宣言し、他のコンテキストで宣言された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 と直接定義された Bean の両方が、BlazeDS および SpringMVC エンドポイントで使用できます。

于 2014-12-09T17:20:58.837 に答える