2012-04-26 7 views
4

Spring BlazeDS統合を使用するアプリケーションがあります。これまではSpringとFlexを使用していましたが、うまく動作しています。 Spring MVCコントローラをいくつか追加する必要があります。春BlazeDSのドキュメントは、これを行う方法は、以下のように、web.xmlのに2つのsperateコンテキストを宣言することであると述べている:ここでは異なるSpringコンテキスト間でSpring Beanをどのように共有しますか?

<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フレックスのいずれかです。どのようにしてこれを行うことができますか?あるコンテキストでBean(XMLまたはコンポーネントのスキャン)を宣言し、それを他のコンテキストで宣言されたBeanと共有できるようにするにはどうすればよいですか? ありがとう!

答えて

6

ContextLoaderListenerを使用して親コンテキストを作成します。 DispatcherServletコンテキストは自動的にそのコンテキストの子になります。

親コンテキストで共有Beanを作成し、子コンテキストでBeanでそれらを参照します。

<component-scan>を使用している場合は、誤ってクラスを複数のコンテキストにスキャンしないように注意してください。私の答えhereを参照してください。

+0

ここで、「誤って複数のコンテキストにクラスをスキャンすることが重要なポイントです」と表示されます。ありがとう! – cwu9T9

1

は、あなたのweb.xmlにこれを追加:スキャンとの直接の定義で定義

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

どちらの豆はあなたのBlazeDSのとSpringMVCエンドポイントのために利用できるようになります。

関連する問題