web-dev-qa-db-ja.com

Spring MVCとStruts MVCの違い

Spring MVCとStruts MVCの大きな違いは何ですか?

45
Krishna

Spring MVCとStrutsの主な違いは次のとおりです。SpringMVCは疎結合フレームワークですが、Strutsは密結合です。エンタープライズアプリケーションの場合、アプリケーションを再利用可能かつ堅牢にし、分散させるために、疎結合としてアプリケーションを構築する必要があります。

40
hossaindoula

Spring MVCとStrutsを比較したい場合は、StrutsよりもSpring MVCの利点を考慮してください。

  1. Springは、コントローラー、JavaBeanモデル、およびビューを非常にきれいに分割します。
  2. SpringのMVCは非常に柔軟です。 ActionオブジェクトとFormオブジェクトを具体的な継承に強制するStruts(Javaの具体的な継承の単一ショットを排除する)とは異なり、Spring MVCは完全にインターフェイスに基づいています。さらに、Spring MVCフレームワークのほぼすべての部分は、独自のインターフェイスにプラグインすることで構成できます。もちろん、実装オプションとして便利なクラスも提供しています。
  3. SpringはWebWorkと同様に、インターセプターとコントローラーを提供するため、多くのリクエストの処理に共通する動作を簡単に除外できます。
  4. Spring MVCは本当にビューに依存しません。したくない場合は、JSPを使用するようにプッシュされません。 Velocity、XLST、またはその他の表示テクノロジーを使用できます。カスタムビューメカニズム(たとえば、独自のテンプレート言語)を使用する場合は、Spring Viewインターフェイスを簡単に実装して統合できます。
  5. Spring Controllerは、他のオブジェクトと同様にIoCを介して構成されます。これにより、テストが容易になり、Springが管理する他のオブジェクトと美しく統合されます。
  6. Spring MVC Web層は通常、Struts Web層よりもテストが簡単です。これは、具体的な継承の強制と、ディスパッチャサーブレットへのコントローラの明示的な依存が回避されるためです。
  7. Web層は、ビジネスオブジェクトレイヤーの上の薄いレイヤーになります。これにより、優れた実践が促進されます。 Strutsおよびその他の専用Webフレームワークを使用すると、ビジネスオブジェクトの実装を自由に行うことができます。 Springは、アプリケーションのすべての層に統合されたフレームワークを提供します
21
Rais Alam

SpringのWeb MVCフレームワークは、リクエストをハンドラーにディスパッチするDispatcherServletを中心に設計されており、構成可能なハンドラーマッピング、ビューの解像度、ロケール、テーマの解像度、およびアップロードファイルのサポートを備えています。デフォルトのハンドラーは、ModelAndViewのhandleRequest(request、response)メソッドを提供するだけの非常にシンプルなコントローラーインターフェースです。これは既にアプリケーションコントローラーに使用できますが、AbstractController、AbstractCommandController、SimpleFormControllerなどで構成される実装階層を含めることをお勧めします。通常、アプリケーションコントローラーはそれらのサブクラスになります。適切な基本クラスを選択できることに注意してください。フォームがない場合は、フォームコントローラーは必要ありません。これはStrutsとの大きな違いです

8
praveen

strutsspring MVC の主な違いは、アスペクト指向プログラミング(AOP)とオブジェクト指向プログラミング(OOP)の違いについてです。

Springは Dependency Injection を使用して、アプリケーションを疎結合にします。SpringFrameworkのコアはIoCコンテナーです。

OOPはAOPが行うすべてを実行できますが、アプローチは異なります。つまり、AOPは、プログラム構造についての別の考え方を提供することにより、OOPを補完します。

実際には、多くのファイルに同じ変更を適用する場合。大量のファイルに同じコードを追加するために、Strutsを使い尽くしてください。代わりに、Springは新しい変更を別の場所に書き込み、ファイルに注入します。

AOPに関連する用語のいくつかは、分野横断的な懸念、側面、依存性注入です...

8
JavaEE guy

Spring MVCはSpringに深く統合されていますが、Struts MVCはそうではありません。

6
Ralph

Springは、コントローラー、JavaBeanモデル、およびビューを非常にきれいに分割します。

1
raja777m