6

管理可能なモジュールに分割したい大きなアプリケーションがあります。私はSpringをJpa(プロバイダーとしてHibernate)で使用しています。すべてのエンティティ クラスと dao クラスを含むコア モジュールがあり、他のモジュールが永続性に関してコア モジュールを利用し、それぞれが独自のサービス クラスとコントローラーのセットを持つ構造を思いつきました。

ここに画像の説明を入力

すべての JPa および spring 構成ファイルは、コア モジュールにあります。このセットアップでは、コアモジュールを使用するモジュールで dao Bean を自動配線するという問題に直面しています。だから私の質問は、他のモジュールのコアモジュールから Bean を自動配線することは可能ですか (または、おそらくモジュール間でコンテキストを使用すること)? より良い方法があれば、構造に関する提案も受け付けています。

ありがとう

4

1 に答える 1

2

コア モジュールは、各子コンテキスト モジュールで設定する必要がある親 Spring コンテキストでなければなりません。このようにして、自動配線に問題はありません

すべての子コンテキストは、親からすべての Bean に到達できますが、親は子を見ることができないことに注意してください

アプリケーションの構成方法に応じて、いくつかの方法でこれを行うことができます。

  1. この記事で説明されているように、コア モジュールを個別の jar に入れて各モジュールに配布する複数の Web アプリケーション間でスプリング コンテキストを共有する
  2. プログラムで、各子モジュールにコア スプリング xml を配置すると、次のことができます。

    ClassPathXmlApplicationContext parentAppContext = new ClassPathXmlApplicationContext();
    parentAppContext.setConfigLocation("spring-core.xml"); // this is your core spring xml
    parentAppContext.refresh();
    ClassPathXmlApplicationContext moduleAppContext = new ClassPathXmlApplicationContext();
    moduleAppContext.setConfigLocation("others.xml");
    moduleAppContext.setParent(parentAppContext);
    moduleAppContext.refresh();
    
于 2012-05-19T15:32:02.493 に答える