Spring MVCとSpring Bootの違い


234

私は春を学び始めました。次のステップでは、より大きなWebアプリケーションを開発したいと思います。

今、私はSpring BootまたはSpring MVCのどちらから始めるべきか疑問に思っています。私はすでにいくつか読んだことがありますが、どちらも似ているので混乱しています。

では、2つの違いは何ですか?

回答:


320
  • Spring MVCは、Spring Frameworkによって管理され、サーブレットに基づいた完全なHTTP指向のMVCフレームワークです。これは、JavaEEスタックのJSFに相当します。その中で最も人気のある要素は@Controller、で注釈が付けられたクラスであり、さまざまなHTTPリクエストを使用してアクセスできるメソッドを実装します。@RestControllerRESTベースのAPIを実装するのと同等です。
  • Springブートは、アプリケーションを迅速にセットアップするためのユーティリティであり、Springを利用したアプリケーションを構築するためにすぐに使える構成を提供します。ご存知のように、スプリングは、下の異なるモジュールの広範囲の統合その傘のように、スプリングコアばねデータばねウェブ(方法によってスプリングMVCを含む)など。このツールを使用すると、Springにどれだけの数を使用するかを指示でき、それらをすばやくセットアップできます(後で自分で変更することができます)。

したがって、Spring MVCはWebアプリケーションで使用されるフレームワークであり、Spring BootはSpringベースのプロダクション対応プロジェクト初期化子です。SO のSpring MVCタグWikiSpring BootタグWikiにアクセスすると便利です。


29
はい+ 1、Springブートは自動構成ツール(フレームワークとしてパッケージ化)にすぎません。Spring mvcはWebフレームワークです
Plain_Dude_Sleeping_Alone

2
これは、Spring BootがコントローラーのリターンとポストJSONに対してのみビュー(HTML)ページを表示するために使用されることを意味しますか?ビューを使用してHTMLを表示する場合、Spring MVCを使用する必要がありますか?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVCはビューレイヤーテクノロジーであり、基本的にはコントローラーとして機能するHTTPリクエスト/レスポンスを処理します(HTMLの場合、thymeleafと組み合わせることができます。たとえば、REST + JSONの場合は、そのまま使用します。 JSON変換は統合されたJacksonで行われます)。Spring Bootは、Springアンブレラプロジェクト全体(MVC + Data + Core ...)を統合し、それらを使用するための迅速な本番環境対応の構成を提供します。
Xtreme Biker 2017

3
これは、でWebアプリを構成してSpring BootからWeb機能を実行できることを意味しSpring MVCますか?
マイク

1
@Mike sure it does
Xtreme Biker

105

Spring MVCSpring Bootは他の回答でも詳しく説明されているので、ここで繰り返さずに、具体的な内容に直接ジャンプします。Spring BootSpring MVCは、同等または相互排他的ではありません。Springを使用してWebアプリケーション開発を行う場合は、とにかくSpring MVCを使用します。次に、Spring Bootを使用するかどうかが問題になります。

一般的なSpringアプリケーションの開発やSpringの学習を始めるには、Spring Bootを使用することをお勧めします。それは仕事をかなり楽にして、生産準備ができて、急速に広く採用されています。

STS(Spring Tool Suite)には、Spring Bootプロジェクトの作成用とSpring MVCプロジェクトの作成用の2つのウィザードがあるため、初心者がこの質問をするのを見かけることがあります。したがって、私の推奨は、Spring Bootプロジェクトを作成し、その中のモジュールとしてWebを選択することです。


1
spring-boot(spring-data-restおよびspring-webを使用)を使用すると、ここにMVC原則がありますよね?Spring MVCはMVCモデルを使用する唯一のSpringバージョンであると思っていたので、混乱しました。
watchme 2018年

5
spring-webは、spring-mvcモジュールにすぎません
Sanjay


23

簡単に言えば、次のように表現できます。

Spring boot = Spring MVC + Auto Configuration(Don't need to write spring.xml file for configurations) + Server(You can have embedded Tomcat, Netty, Jetty server).

また、Spring BootはOpinionatedフレームワークであるため、迅速な開発、構成に必要な時間の短縮を考慮したビルド、および非常に優れたコミュニティサポートがあります。


19

Spring MVCSpring Frameworkのサブプロジェクトであり、MVC(Model-View-Controller)パターンを使用するアプリケーションの設計と開発を対象としています。Spring MVCは、Spring Frameworkと完全に完全に統合し、他のほとんどのサブプロジェクトと推移的に統合するように設計されています。

Spring Bootこの記事から、Spring Engineeringチームは非常によく理解できます。それはおそらく意見が分かれている、つまり特定のスタイルの迅速な開発を強く支持しているが、ルールの例外に対応できるように十分に設計されている。要するに、必要に応じて規則を破る必要性を理解してくれるのは、構成方法論に対する規則です。


17

Spring、Spring MVC、Spring Bootを区別するいくつかの主要なポイントは次のとおりです。

春 :

  1. 主な違いは「テスト能力」です。
  2. 春にはDIとIOCが付属しています。システムによって実行されるすべてのハードワークにより、どのような種類の作業も行う必要はありません(通常、クラスのオブジェクトを手動で定義しますが、Diを介して@Serviceまたは@Componentで注釈を付けます-一致するクラスがそれらを管理します)。
  3. @Autowiredアノテーションを使用すると、単体テスト時に簡単にmock()できます。
  4. 複製と配管のコード。JDBCでは、Springがデータベース操作を実行するために同じコードを複数回記述して、HibernateとORMによってその問題を解決します。
  5. 他のフレームワークとの良好な統合。Hibernate、ORM、Junit&Mockitoなど。

春MVC

  1. Spring MVCフレームワークは、HTTP指向のWebアプリケーション開発機能を提供するSpringのモジュールです。
  2. Spring MVCは、入力ロジック(コントローラー)、ビジネスロジック(モデル)、およびUIロジック(ビュー)でコードを明確に分離しています。
  3. Spring MVCパターンは、柔軟で疎結合のWebアプリケーションの開発に役立ちます。
  4. 必要に応じてアプリケーションをカスタマイズするためのハードコードされたさまざまな方法を提供します。

春ブーツ:

  1. クイックアプリケーションを作成して、単一の大きなWebアプリケーションを管理する代わりに、独自のスコープと機能を持つ異なるマイクロサービスに個別に分割します。
  2. Web Jarを使用した自動構成:通常のSpringでは、DispatcherServlet、Component Scan、View Resolver、Web Jar、XMLなどの多くの構成があります。(たとえば、データソースを構成する場合は、エンティティマネージャートランザクションマネージャーファクトリ)。クラスパスを使用して使用できない場合は、自動的に構成します。
  3. デフォルトのSpringスターターが付属し、デフォルトのSpring構成依存関係(Spring Core、Web-MVC、Jackson、Tomcat、検証、データバインディング、ロギングなど)が付属しています。バージョン管理の問題も心配しないでください。

(進化:Spring-> Spring MVC-> Spring Bootなので、新しいバージョンは古いバージョンの機能と互換性があります。)注:すべてのポイントが含まれているわけではありません。


10

SpringBootは実際には事前構成されており、ボイラー構成を減らし、アプリケーションを開始する最も簡単または迅速な方法を提供します。

SpringBootは、設定の頭痛の種を開発者からSpringではなく自分自身に任せます。

暗黙的に、SpringBootは、Bean、コントローラー、サービス、jpaなどのSpringフレームワークの概念に基づいています。

SpringBootはSpringのラッパーであると言えます。

SpringBootでは、サーバーのデフォルトポートは8080ですが、変更したい場合は、application.propertiesに移動して次のように記述してください

server.port = 8084


10
  • スプリングブートを使用すると、構成を構築する必要はありません。これは、プロジェクトの作成時に自動的に行われます。

  • Spring MVCを使用する場合は、自分で構成を作成する必要があります。より複雑ですが、非常に重要です。


シンプルでエレガントな説明
Sritam Jagadev

8

以前の回答で同じことを繰り返さずに、
私は新しいプロジェクトを開始することを考えていて、プロジェクトを開始するのに最適なフレームワークがどれかわからない人々のためにこの回答を書いています。あなたがこのフレームワークの初心者である場合、私が好む最良のことはスプリングブートを使用することです(STS / Spring Tool Suiteを使用)。それは非常に役立ちますので。すべての構成を独自に行います。さらに、データベースフレームワークとしてHibernateとSpring-Bootを使用します。この組み合わせで、あなたのアプリケーションは最高になります。私の経験でそれを保証できます。

これもJEEの最良のフレームワークの1つです(現在)。これは近い将来になくなる予定です。今後登場する軽量の代替品があります。だからあなたの経験で更新してください特定のフレームワークに固執しないでください。最良のことは、フレームワークではなく、概念に精通していることです。


5

このように考えてください:

Spring MVCは、MVCアーキテクチャーを実装するためのWebベースのフレームワークです。

Spring Bootはプログラマ向けのツールです。プログラマーはプログラミングに集中し、ツールは構成に集中する必要があります。したがって、単純な「Hello world」を作成するために一連のxmlを構成する時間を無駄にする必要はありません。



1

Spring MVCとSpring Bootは、異なる目的で存在します。したがって、候補として互いに比較することは賢明ではありません。

Spring Bootとは何ですか?

Spring Bootは、適切なデフォルトでSpringアプリケーションをパッケージ化するためのフレームワークです。これは何を意味するのでしょうか?。Spring MVC、Spring Data、Hibernate、Tomcatを使用してWebアプリケーションを開発しています。このアプリケーションをどのようにパッケージ化してWebサーバーにデプロイしますか?現在のところ、Webサーバーにデプロイするには、構成、XMLファイルなどを手動で作成する必要があります。

Spring Bootは、プロジェクトのゼロXML構成でそれを行います。信じてください。デプロイメント記述子やWebサーバーなどは必要ありません。SpringBootは、すべての依存関係をバンドルする魔法のフレームワークです。最後に、Webアプリケーションはサーバーが埋め込まれたスタンドアロンのJARファイルになります。

これがどのように機能するかまだ混乱している場合は、Spring Bootを使用したマイクロサービスフレームワークの開発についてお読みください。

Spring MVCとは何ですか?

これは、Webアプリケーションの構築に役立つ従来のWebアプリケーションフレームワークです。Strutsフレームワークに似ています。

Spring MVCは、Webアプリケーションの構築に使用されるJavaフレームワークです。これは、Model-View-Controller設計パターンに従います。制御の反転、依存性注入などのコアSpringフレームワークのすべての基本機能を実装します。

Spring MVCは、DispatcherServletの助けを借りて、SpringフレームワークでMVCを使用するためのエレガントなソリューションを提供します。ここで、DispatcherServletは、着信要求を受け取り、それをコントローラー、モデル、ビューなどの適切なリソースにマップするクラスです。

これが違いを理解するのに役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.