0

春の統合に基づくイベント駆動型のアプリケーションがあります。アプリケーションは、ドメイン (モデル オブジェクト)、永続性 (daos)、コア (スプリング統合に基づくビジネス ロジック) サービス (MDB) の 4 つのモジュールで構成されます。

すべてのモジュールは Maven プロジェクトです。アプリケーションは EAR にパッケージ化され、weblogic にデプロイされます。

スプリング コンテキストは、すべてのモジュール間で共有されます。

ここで、ドメインのサブセットを公開する Web アプリケーションを開発する必要があります。そのため、コントローラーはいくつかの daos といくつかのドメイン オブジェクトを使用する必要があります。この問題を処理するためのベスト プラクティスは何ですか? Web アプリケーションはすべてのイヤー スプリング コンテキストを共有する必要がありますか? それとも、必要なものをすべて再定義する「アドホック」Web アプリケーションのスプリング コンテキストを作成する方がよいでしょうか? (例:ダオス)。

4

2 に答える 2

1

機能的なレイヤリングの恩恵を受けるようです。instead of

|- persistence (daos)
|- domain (model objects)
|- core (biz logic based on spring-integration)
|- services (MDB)

機能的な方法でアプリケーションを階層化できます。あなたのアプリが取引を行うとしましょう:

|- broker
|- product
    |- underlying
    |- option
    |- future
    |- forward
    |- ..
|- feed 
|- valuation
|- ...

その下brokerにはbroker-persistencebroker-serviceなどがあります。もちろん、アプリのビジネス ドメインはおそらく異なるでしょう。これは単純な例ですが、要点を示しています。

このようにして、すべてを に含めることができ、EARwebapp に含める/インポートできるものをより柔軟に指定できます。

たとえば、 とはbroker.war別に を作成することもできますproduct.war。これは、をダウンさせずに を再デプロイできることも意味します。ビジネス ドメインでは必要ないかもしれませんが技術スタックではなく、ビジネス ニーズ/領域に従って物事が階層化されている場合にのみ到達できる、優れた機能です。broker.warproduct.war

ちなみに、EARMDB だけで複雑にする必要はありません。Springコンテナーによって単純に制御されるSpring のメッセージ駆動型 POJOを使用できます。

于 2011-10-03T13:52:11.523 に答える
0

通常、コントローラー、ハンドラーマッピング、ビューリゾルバーなどのすべての Web 関連のものを配置するDispatcherServletごとに特定の WebApplicationContext を作成します。サービス、daos などの残りのアプリケーションコンテキストは、/ で構成されますすべてのサーブレットで共有されるルート WebApplicationContext 。

web.xml :

<web-app ...>

    <!-- Definition of the root web application context and shared by all servlets -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dao-config.xml,/WEB-INF/other-config.xml</param-value>
    </context-param>

    <!-- Must be added to enable the configs above -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Servlet specific application context that inherits bean definitions from the root application context. By convention, it is located in in /WEB-INF/[servlet-name]-servlet.xml -->
    <servlet>
        <servlet-name>yourservlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>yourservlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

概要と詳細については、 Spring MVC リファレンス ドキュメントの図「Spring Web MVC のコンテキスト階層」までスクロールします。

于 2011-10-03T12:43:51.830 に答える