現在、複数のプロジェクト/モジュールに分割されたアプリケーションを作成しています。たとえば、次のモジュールを見てみましょう。
- myApp-DAO
- myApp-jabber
各モジュールには、独自のSpringコンテキストxmlファイルがあります。DAOモジュールの場合、必要なdb接続パラメーターを含むプロパティファイルを読み取るPropertyPlaceholderConfigurerがあります。jabberモジュールには、jabber接続プロパティ用のPropertyPlaceHolderConfigurerもあります。
myApp-DAOとmyApp-jabberを含むメインアプリケーションが登場します。すべてのコンテキストファイルを読み取り、1つの大きなSpringコンテキストを開始します。残念ながら、コンテキストごとに1つのPropertyPlaceholderConfigurerしか存在できないようです。そのため、最初にロードされたモジュールは、その接続パラメーターを読み取ることができます。もう1つは「プレースホルダー 'jabber.host'を解決できませんでした」のようなエラーで例外をスローします
私は問題が何であるかをある程度理解していますが、私は本当に解決策、または私のユースケースのベストプラクティスを知りません。
各モジュールが独自のプロパティファイルをロードできるように、各モジュールをどのように構成しますか?現在、PropertyPlaceHolderConfigurerを個別のコンテキストファイルから移動し、メインアプリケーションのコンテキストにマージしました(単一のPropertyPlaceHolderConfigurerですべてのプロパティファイルをロードしています)。ただし、daoモジュールを使用するすべての人が、コンテキストにPropertyPlaceHolderConfigurerが必要であることを知っている必要があるため、これは厄介です。また、daoモジュールの統合テストも失敗します。
Stackoverflowコミュニティからの解決策やアイデアについて知りたいです。