Model-View-Controller フレームワーク
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/20 01:11 UTC 版)
「Spring Framework」の記事における「Model-View-Controller フレームワーク」の解説
Spring Framework には、当初の計画にはなかった、自前のMVCフレームワークがある。自前のWebフレームワークを作ることにしたのは、Apache Struts Webフレームワークに失望したためであり、他のフレームワークでは不足だったためである。開発者らは特に、プレゼンテーション層と要求処理層の分離、要求処理層とモデルの分離が不十分と判断した。 Strutsと同様、Spring MVC は要求ベースのフレームワークである。このフレームワークは、最近の要求ベースのフレームワークでは必須となっている全責務について Strategy インタフェースを定義している。各インタフェースの責務は十分単純明快なので、実装を作成するのは容易である。インタフェースは Servlet API と密に結合しており、そのAPIの能力をフルに発揮できる。この Servlet API との密結合があるため、Webアプリケーションの高度な抽象化ができないと指摘する者もいる。しかし、この結合があるおかげで Servlet API の機能をユーザーが使うことができ、同時に高度に抽象化されたフレームワークも提供している。 DispatcherServlet クラスは、フレームワークの en:Front Controller pattern であり、HTTP要求の処理中に各種インタフェースに制御を委譲する。 Spring MVC の定義するインタフェースの中でも、以下のものが重要である。 HandlerMapping: 何らかの属性や条件に従って、入ってきた要求を処理するオブジェクト(ハンドラー)を選択する。 HandlerAdapter: 入ってきた要求を処理するオブジェクトを実行する。 Controller: Model と View の間にあって、入ってきた要求を管理し、適切な応答へリダイレクトする。 View: クライアントに応答を返す。 ViewResolver: ビューの論理名に基づいて View を選択する(必須ではない)。 HandlerInterceptor: 入ってきた要求を横取りする。Servletフィルタに似ているが同じではない(オプションであり、DispatcherServlet で制御されない)。 LocaleResolver: 個々のユーザーのロケールを解決し、オプションでセーブもする。 MultipartResolver: 入ってきた要求をラッピングすることで、ファイルアップロードを容易にする。 各 strategy インタフェースには、フレームワーク全体の中での重要な責務がある。これらインタフェースが提供する抽象化はかなり強力で、実装では広範囲なバリエーションが可能である。Spring MVC にはこれらインタフェースの実装も含まれているが、開発者やベンダーが新たな実装を書くこともできる。Spring MVC はJavaの java.util.Map インタフェースを Model のためのデータ指向抽象化として使っており、キーは文字列値でなければならない。 これらインタフェースの実装のテストを容易にできる点は Spring MVC による高度な抽象化の重要な利点のひとつである。DispatcherServlet は Spring Inversion of Control コンテナと密に結合されており、アプリケーションのWeb層のコンフィギュレーションが可能である。しかし、Spring Framework の他の部分(コンテナも含む)を使ったアプリケーションで Spring MVC を使わないという選択も可能である。 Spring MVC は Spring コンテナをコンフィギュレーションと組み立てに使っているため、Webベースのアプリケーションで Inversion of Control 機能の利点をフルに活用できる。
※この「Model-View-Controller フレームワーク」の解説は、「Spring Framework」の解説の一部です。
「Model-View-Controller フレームワーク」を含む「Spring Framework」の記事については、「Spring Framework」の概要を参照ください。
- Model-View-Controller フレームワークのページへのリンク