質問: webアプリケーション(spring、jsf)フォーク、サブプロジェクトに既存のコードを再利用する方法は? 私の質問はやや哲学的で「建築志向」になるので、我慢してください。現在、既存のjava webアプリケーションがspringとjsf(facelets)の上にmavenで構築されています。これらは基本的に、可能なソリューションの範囲を制限するツールです。ここで要点を説明します。異なる「エンドコンシューマー」の異なるドメインで実行されるこのアプリケーションのフォークを実装し、両方のバージョンの変更要求を実装する必要がありますが、これらのバージョンのコードベースはおそらく常に約90%同じです。両方のバージョンで同時に実装するために同じ変更要求を定義できますが、選択したバージョンに対してのみ個別の変更要求が来る場合もあります。プロジェクトの後半でどのような変更要求が来るかを制御することはできません(ただし、かなりの数が予想されます)。機能の違いは、アプリケーションのbean部分とビュー部分の両方で発生する可能性があります。変更を実装すると、2回実装することになる場合があるため、2つの完全に別個のプロジェクトを作成することは望ましくありません。大きな問題は、私たちが期待していることです将来的にはさらに多くのフォークそのため、努力はさらに増える可能性があります。問題は、プロジェクトの保守性を向上させるために、どのような制御方法またはアーキテクチャパターンを導入できるかということです。 1つの解決策は次のようになります。 springプロファイルを使用して、アプリケーションの現在のフォークに基づいて適切なコンポーネントを挿入し、ビュー(xhtml)の実装を完全に分離します。 要約すると、特定のコンテキスト変数に基づいてのみ分離およびアクティブ化できるアプリケーション全体の変更を実装するための最良の方法を探しています(どこにでも伝播する方法は?)任意の入力、アイデア、または新しい視点を歓迎します。
回答: 以下を含むマルチテナント手法を検討する必要があります 複数のクライアントを許可するようにdbを分割する、またはクライアントごとにdb 切り替え可能なコンポーネントを使用してアプリを合成する