理想的には、Spring MVCアプリケーションのコントローラーは、リクエストを受信し、リクエストをAPIにディスパッチし、(呼び出しの)結果をモデルにロードして(ビューが後でレンダリングするために)、ビューに転送する必要があります。彼らはこれ以上やるべきではありません。
私のコントローラーは今日これよりもはるかに多くのことを行っており、特定の責任をコントローラーから他のAPIに移したいと思います。今日の私のアプリケーション設計(かなり典型的):
controller <-> Service API <-> DAO <-> DB
今日のコントローラーは、Webアプリが必要とするものとServiceAPIが提供するものとの間のデルタを埋めます。このデルタをかみ砕くコントローラーとサービスAPIの間に追加のレイヤーを配置したいと思います。私の質問は、これらがどのレイヤーであるべきか、そしてこれらの新しいレイヤーの責任は何であるべきかということです。
私の現在のアイデアは次のとおりです
controller <-> controller helper <-> Business API <-> Service API <-> DAO <-> DB
コントローラヘルパー(Webコンテキスト対応-Model、HttpServlet、およびその他のWebコンテキストクラスに依存します):
- エンティティをDTOオブジェクトに変換する(2方向)
- IDをエンティティに解決します。たとえば、Controllerは(キーを使用して)学生IDを検索し、それをStudentエンティティに変換します。
ビジネスAPI(Webコンテキストの依存関係なし-JUnitテスト可能):
- ファサードとして機能します。複数のサービスAPIを呼び出して、1つのビジネスリクエストを実現します。
- Webアプリ用に特別に調整されたAPIを提供します。
これを別の方法で解決しますか?この特定の問題に関連するリソース(本、記事など)はありますか?
私の質問に答えなかった以前の議論のいくつか:
ありがとう、Vijay